From b593b64c9da55bbfb33dbc186e6a175f89550643 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Mon, 5 Jul 2021 13:18:58 -0700 Subject: [PATCH 01/91] Go 1.16 support for embedded files (#51) * add go 1.16 --- .circleci/config.yml | 5 +++++ generator/embedded.go | 16 ++++++++++++++++ generator/embedded_1.16.go | 15 +++++++++++++++ generator/generator.go | 7 +------ go.mod | 2 +- 5 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 generator/embedded.go create mode 100644 generator/embedded_1.16.go diff --git a/.circleci/config.yml b/.circleci/config.yml index fd77bd39..b0d96513 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -36,6 +36,10 @@ jobs: docker: - image: circleci/golang:1.15 <<: *common_parts + golang_1.16: + docker: + - image: circleci/golang:1.16 + <<: *common_parts workflows: version: 2 @@ -45,3 +49,4 @@ workflows: - golang_1.13 - golang_1.14 - golang_1.15 + - golang_1.16 diff --git a/generator/embedded.go b/generator/embedded.go new file mode 100644 index 00000000..da159178 --- /dev/null +++ b/generator/embedded.go @@ -0,0 +1,16 @@ +//go:generate ../bin/go-bindata -nometadata -o assets/assets.go -pkg=assets enum.tmpl +// +build !go1.16 + +package generator + +import ( + "text/template" + + "github.com/abice/go-enum/generator/assets" +) + +func (g *Generator) addEmbeddedTemplates() { + for _, asset := range assets.AssetNames() { + g.t = template.Must(g.t.Parse(string(assets.MustAsset(asset)))) + } +} diff --git a/generator/embedded_1.16.go b/generator/embedded_1.16.go new file mode 100644 index 00000000..044eed88 --- /dev/null +++ b/generator/embedded_1.16.go @@ -0,0 +1,15 @@ +// +build go1.16 + +package generator + +import ( + "embed" + "text/template" +) + +//go:embed enum.tmpl +var content embed.FS + +func (g *Generator) addEmbeddedTemplates() { + g.t = template.Must(g.t.ParseFS(content, "*.tmpl")) +} diff --git a/generator/generator.go b/generator/generator.go index db814980..8c1049ba 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -1,5 +1,3 @@ -//go:generate ../bin/go-bindata -nometadata -o assets/assets.go -pkg=assets enum.tmpl - package generator import ( @@ -16,7 +14,6 @@ import ( "unicode" "github.com/Masterminds/sprig" - "github.com/abice/go-enum/generator/assets" "github.com/pkg/errors" "golang.org/x/tools/imports" ) @@ -83,9 +80,7 @@ func NewGenerator() *Generator { g.t.Funcs(funcs) - for _, asset := range assets.AssetNames() { - g.t = template.Must(g.t.Parse(string(assets.MustAsset(asset)))) - } + g.addEmbeddedTemplates() g.updateTemplates() diff --git a/go.mod b/go.mod index acfb87a4..39f1c2e1 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/abice/go-enum -go 1.12 +go 1.16 require ( github.com/Masterminds/goutils v1.1.0 // indirect From cd5e40dc155c767ad74e664b003891d1e8a01f51 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Tue, 6 Jul 2021 19:38:36 -0700 Subject: [PATCH 02/91] Match go recommended header (#55) --- example/animal_enum.go | 3 +-- example/color_enum.go | 3 +-- example/commented_enum.go | 3 +-- example/custom_prefix_enum.go | 3 +-- example/example_enum.go | 3 +-- example/sql_enum.go | 3 +-- example/sql_int_enum.go | 3 +-- example/sql_str_enum.go | 3 +-- example/user_template_enum.go | 3 +-- generator/.snapshots/generator-TestCustomPrefixExampleFile | 5 ++--- generator/.snapshots/generator-TestExampleFile | 5 ++--- generator/.snapshots/generator-TestNoPrefixExampleFile | 5 ++--- .../generator-TestNoPrefixExampleFileWithSnakeToCamel | 5 ++--- generator/enum.tmpl | 3 +-- 14 files changed, 18 insertions(+), 32 deletions(-) diff --git a/example/animal_enum.go b/example/animal_enum.go index ab7ebff1..be973027 100644 --- a/example/animal_enum.go +++ b/example/animal_enum.go @@ -1,5 +1,4 @@ -// Code generated by go-enum -// DO NOT EDIT! +// Code generated by go-enum DO NOT EDIT. package example diff --git a/example/color_enum.go b/example/color_enum.go index f8a32816..0904bc9b 100644 --- a/example/color_enum.go +++ b/example/color_enum.go @@ -1,5 +1,4 @@ -// Code generated by go-enum -// DO NOT EDIT! +// Code generated by go-enum DO NOT EDIT. package example diff --git a/example/commented_enum.go b/example/commented_enum.go index fc39f6d6..9b447248 100644 --- a/example/commented_enum.go +++ b/example/commented_enum.go @@ -1,5 +1,4 @@ -// Code generated by go-enum -// DO NOT EDIT! +// Code generated by go-enum DO NOT EDIT. package example diff --git a/example/custom_prefix_enum.go b/example/custom_prefix_enum.go index 40a3a4c0..fea68f48 100644 --- a/example/custom_prefix_enum.go +++ b/example/custom_prefix_enum.go @@ -1,5 +1,4 @@ -// Code generated by go-enum -// DO NOT EDIT! +// Code generated by go-enum DO NOT EDIT. package example diff --git a/example/example_enum.go b/example/example_enum.go index 5643cf0c..e64ff245 100644 --- a/example/example_enum.go +++ b/example/example_enum.go @@ -1,5 +1,4 @@ -// Code generated by go-enum -// DO NOT EDIT! +// Code generated by go-enum DO NOT EDIT. package example diff --git a/example/sql_enum.go b/example/sql_enum.go index 220189f5..4d8a5f25 100644 --- a/example/sql_enum.go +++ b/example/sql_enum.go @@ -1,5 +1,4 @@ -// Code generated by go-enum -// DO NOT EDIT! +// Code generated by go-enum DO NOT EDIT. package example diff --git a/example/sql_int_enum.go b/example/sql_int_enum.go index c874daf3..8bb9f632 100644 --- a/example/sql_int_enum.go +++ b/example/sql_int_enum.go @@ -1,5 +1,4 @@ -// Code generated by go-enum -// DO NOT EDIT! +// Code generated by go-enum DO NOT EDIT. package example diff --git a/example/sql_str_enum.go b/example/sql_str_enum.go index 2cb67016..66e632cf 100644 --- a/example/sql_str_enum.go +++ b/example/sql_str_enum.go @@ -1,5 +1,4 @@ -// Code generated by go-enum -// DO NOT EDIT! +// Code generated by go-enum DO NOT EDIT. package example diff --git a/example/user_template_enum.go b/example/user_template_enum.go index f5d8ed96..45b5a218 100644 --- a/example/user_template_enum.go +++ b/example/user_template_enum.go @@ -1,5 +1,4 @@ -// Code generated by go-enum -// DO NOT EDIT! +// Code generated by go-enum DO NOT EDIT. package example diff --git a/generator/.snapshots/generator-TestCustomPrefixExampleFile b/generator/.snapshots/generator-TestCustomPrefixExampleFile index e1cf33db..a4f8f000 100644 --- a/generator/.snapshots/generator-TestCustomPrefixExampleFile +++ b/generator/.snapshots/generator-TestCustomPrefixExampleFile @@ -1,6 +1,5 @@ -([]string) (len=3052) { - (string) (len=28) "// Code generated by go-enum", - (string) (len=15) "// DO NOT EDIT!", +([]string) (len=3051) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) "", (string) (len=17) "package generator", (string) "", diff --git a/generator/.snapshots/generator-TestExampleFile b/generator/.snapshots/generator-TestExampleFile index d1f21a5f..c07c3f7f 100644 --- a/generator/.snapshots/generator-TestExampleFile +++ b/generator/.snapshots/generator-TestExampleFile @@ -1,6 +1,5 @@ -([]string) (len=1824) { - (string) (len=28) "// Code generated by go-enum", - (string) (len=15) "// DO NOT EDIT!", +([]string) (len=1823) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) "", (string) (len=17) "package generator", (string) "", diff --git a/generator/.snapshots/generator-TestNoPrefixExampleFile b/generator/.snapshots/generator-TestNoPrefixExampleFile index 8215e315..21c66cbf 100644 --- a/generator/.snapshots/generator-TestNoPrefixExampleFile +++ b/generator/.snapshots/generator-TestNoPrefixExampleFile @@ -1,6 +1,5 @@ -([]string) (len=990) { - (string) (len=28) "// Code generated by go-enum", - (string) (len=15) "// DO NOT EDIT!", +([]string) (len=989) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) "", (string) (len=17) "package generator", (string) "", diff --git a/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel b/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel index 1a4e7de8..13115b9f 100644 --- a/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel +++ b/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel @@ -1,6 +1,5 @@ -([]string) (len=990) { - (string) (len=28) "// Code generated by go-enum", - (string) (len=15) "// DO NOT EDIT!", +([]string) (len=989) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) "", (string) (len=17) "package generator", (string) "", diff --git a/generator/enum.tmpl b/generator/enum.tmpl index 6a025af6..c4ae7b79 100644 --- a/generator/enum.tmpl +++ b/generator/enum.tmpl @@ -1,6 +1,5 @@ {{- define "header"}} -// Code generated by go-enum -// DO NOT EDIT! +// Code generated by go-enum DO NOT EDIT. package {{.package}} From 1516fdeb2d2cc0ff41e49b32dee42e08813ad123 Mon Sep 17 00:00:00 2001 From: Matthieu MOREL Date: Sun, 11 Jul 2021 17:05:11 +0200 Subject: [PATCH 03/91] Create dependabot.yml (#56) --- .github/dependabot.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..36b24f29 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: gomod + directory: / + schedule: + interval: daily From bf1952514aeeb23d0ab9fa53a856618cbb2474c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Jul 2021 09:24:57 -0700 Subject: [PATCH 04/91] Bump github.com/golang/mock from 1.4.4 to 1.6.0 (#58) Bumps [github.com/golang/mock](https://github.com/golang/mock) from 1.4.4 to 1.6.0. - [Release notes](https://github.com/golang/mock/releases) - [Changelog](https://github.com/golang/mock/blob/master/.goreleaser.yml) - [Commits](https://github.com/golang/mock/compare/v1.4.4...v1.6.0) --- updated-dependencies: - dependency-name: github.com/golang/mock dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 5 ++--- go.sum | 32 ++++++++++++++------------------ 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/go.mod b/go.mod index 39f1c2e1..8d9298aa 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/Masterminds/sprig v2.22.0+incompatible github.com/bradleyjkemp/cupaloy v2.2.0+incompatible github.com/davecgh/go-spew v1.1.1 // indirect - github.com/golang/mock v1.4.4 + github.com/golang/mock v1.6.0 github.com/google/uuid v1.1.2 // indirect github.com/huandu/xstrings v1.3.2 // indirect github.com/imdario/mergo v0.3.11 // indirect @@ -24,7 +24,6 @@ require ( github.com/stretchr/testify v1.4.0 github.com/urfave/cli/v2 v2.3.0 golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9 // indirect - golang.org/x/sys v0.0.0-20201113233024-12cec1faf1ba // indirect - golang.org/x/tools v0.0.0-20201114224030-61ea331ec02b + golang.org/x/tools v0.1.1 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect ) diff --git a/go.sum b/go.sum index a88a69f0..aa3f1a03 100644 --- a/go.sum +++ b/go.sum @@ -12,8 +12,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:ma github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= @@ -40,7 +40,6 @@ github.com/mattn/goveralls v0.0.7 h1:vzy0i4a2iDzEFMdXIxcanRadkr0FBvSBKUmj0P8SPlQ github.com/mattn/goveralls v0.0.7/go.mod h1:h8b4ow6FxSPMQHF6o2ve3qsclnffZjYTNEKmLesRwqw= github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= -github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= @@ -62,47 +61,44 @@ github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/X github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9 h1:umElSU9WZirRdgu2yFHY0ayQkEnKiOC1TtM3fWXFnoU= golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42 h1:vEOn+mP2zCOVzKckCZy6YsCtDblrpj/w7B9nxGNELpg= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201113233024-12cec1faf1ba h1:xmhUJGQGbxlod18iJGqVEp9cHIPLl7QiX2aA3to708s= -golang.org/x/sys v0.0.0-20201113233024-12cec1faf1ba/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20201114224030-61ea331ec02b h1:Ych5r0Z6MLML1fgf5hTg9p5bV56Xqx9xv9hLgMBATWs= -golang.org/x/tools v0.0.0-20201114224030-61ea331ec02b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.1 h1:wGiQel/hW0NnEkJUk8lbzkX2gFJU6PFxf1v5OlCfuOs= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 473a7dd3e670f21c413bc9d798aa891ab0e33766 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Jul 2021 13:31:34 -0700 Subject: [PATCH 05/91] Bump github.com/mattn/goveralls from 0.0.7 to 0.0.9 (#59) Bumps [github.com/mattn/goveralls](https://github.com/mattn/goveralls) from 0.0.7 to 0.0.9. - [Release notes](https://github.com/mattn/goveralls/releases) - [Commits](https://github.com/mattn/goveralls/compare/v0.0.7...v0.0.9) --- updated-dependencies: - dependency-name: github.com/mattn/goveralls dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 10 ++-------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 8d9298aa..c10fc9f5 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/kr/pretty v0.2.1 // indirect github.com/labstack/gommon v0.3.0 github.com/mattn/go-colorable v0.1.8 // indirect - github.com/mattn/goveralls v0.0.7 + github.com/mattn/goveralls v0.0.9 github.com/mitchellh/copystructure v1.0.0 // indirect github.com/mitchellh/reflectwalk v1.0.1 // indirect github.com/pkg/errors v0.9.1 diff --git a/go.sum b/go.sum index aa3f1a03..8967408c 100644 --- a/go.sum +++ b/go.sum @@ -36,8 +36,8 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/goveralls v0.0.7 h1:vzy0i4a2iDzEFMdXIxcanRadkr0FBvSBKUmj0P8SPlQ= -github.com/mattn/goveralls v0.0.7/go.mod h1:h8b4ow6FxSPMQHF6o2ve3qsclnffZjYTNEKmLesRwqw= +github.com/mattn/goveralls v0.0.9 h1:XmIwwrO9a9pqSW6IpI89BSCShzQxx0j/oKnnvELQNME= +github.com/mattn/goveralls v0.0.9/go.mod h1:FRbM1PS8oVsOe9JtdzAAXM+DsvDMMHcM1C7drGJD8HY= github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= @@ -60,21 +60,17 @@ github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9 h1:umElSU9WZirRdgu2yFHY0ayQkEnKiOC1TtM3fWXFnoU= golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -91,12 +87,10 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200522201501-cb1345f3a375/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.1.1 h1:wGiQel/hW0NnEkJUk8lbzkX2gFJU6PFxf1v5OlCfuOs= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 77fd50b169fc1e66a0110a2e7033864808b634bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 11 Jul 2021 13:54:31 -0700 Subject: [PATCH 06/91] Bump github.com/spf13/pflag from 1.0.3 to 1.0.5 (#60) Bumps [github.com/spf13/pflag](https://github.com/spf13/pflag) from 1.0.3 to 1.0.5. - [Release notes](https://github.com/spf13/pflag/releases) - [Commits](https://github.com/spf13/pflag/compare/v1.0.3...v1.0.5) --- updated-dependencies: - dependency-name: github.com/spf13/pflag dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index c10fc9f5..557b42fd 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/mitchellh/copystructure v1.0.0 // indirect github.com/mitchellh/reflectwalk v1.0.1 // indirect github.com/pkg/errors v0.9.1 - github.com/spf13/pflag v1.0.3 + github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.4.0 github.com/urfave/cli/v2 v2.3.0 golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9 // indirect diff --git a/go.sum b/go.sum index 8967408c..859e6107 100644 --- a/go.sum +++ b/go.sum @@ -51,8 +51,8 @@ github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= From 28311a0eb5437ac35c28ed40b01c57331afe151f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Jul 2021 14:01:27 -0700 Subject: [PATCH 07/91] Bump golang.org/x/tools from 0.1.1 to 0.1.5 (#62) Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.1.1 to 0.1.5. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.1.1...v0.1.5) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 557b42fd..bd68e5ef 100644 --- a/go.mod +++ b/go.mod @@ -24,6 +24,6 @@ require ( github.com/stretchr/testify v1.4.0 github.com/urfave/cli/v2 v2.3.0 golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9 // indirect - golang.org/x/tools v0.1.1 + golang.org/x/tools v0.1.5 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect ) diff --git a/go.sum b/go.sum index 859e6107..a0a101c1 100644 --- a/go.sum +++ b/go.sum @@ -87,8 +87,9 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.1 h1:wGiQel/hW0NnEkJUk8lbzkX2gFJU6PFxf1v5OlCfuOs= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= From b811a787631d79955370139cc61201d7bc462cfb Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Sat, 4 Sep 2021 10:17:22 -0700 Subject: [PATCH 08/91] move to github actions (#63) * move to github actions --- .circleci/config.yml | 52 ---------------------------- .github/workflows/build_and_test.yml | 40 +++++++++++++++++++++ README.md | 2 +- 3 files changed, 41 insertions(+), 53 deletions(-) delete mode 100644 .circleci/config.yml create mode 100644 .github/workflows/build_and_test.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index b0d96513..00000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,52 +0,0 @@ -version: 2 - - -common_parts: &common_parts - steps: - - checkout - - run: - name: Build - command: | - make build - - run: - name: Test - command: | - make cover - if [[ -n "$COVERALLS_TOKEN" ]]; then - make coveralls - fi - - store_artifacts: - path: coverage.html - - -jobs: - golang_1.12: - docker: - - image: circleci/golang:1.12 - <<: *common_parts - golang_1.13: - docker: - - image: circleci/golang:1.13 - <<: *common_parts - golang_1.14: - docker: - - image: circleci/golang:1.14 - <<: *common_parts - golang_1.15: - docker: - - image: circleci/golang:1.15 - <<: *common_parts - golang_1.16: - docker: - - image: circleci/golang:1.16 - <<: *common_parts - -workflows: - version: 2 - build_and_test: - jobs: - - golang_1.12 - - golang_1.13 - - golang_1.14 - - golang_1.15 - - golang_1.16 diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml new file mode 100644 index 00000000..6d4e18ba --- /dev/null +++ b/.github/workflows/build_and_test.yml @@ -0,0 +1,40 @@ +name: build and test + +on: + push: + branches: + - master + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + go: + # Drop support of go 1.12 + - "1.13" + - "1.14" + - "1.15" + - "1.16" + name: run tests with go version ${{ matrix.go }} + steps: + - name: install go + uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go }} + + - name: checkout code + uses: actions/checkout@v2 + + - name: Build + run: make build + + - name: Test + env: + COVERALLS_TOKEN: ${{ secrets.COVERALLS_TOKEN }} + run: | + make cover + if [[ -n "$COVERALLS_TOKEN" ]]; then + make coveralls + fi diff --git a/README.md b/README.md index 5f6b0262..1a99cfcf 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # go-enum -[![CircleCI](https://circleci.com/gh/abice/go-enum.svg?style=svg&circle-token=b44c10ce16bcef76e86da801d67811a5ff71fc72)](https://circleci.com/gh/abice/go-enum) +[![Actions Status](https://github.com/abice/go-enum/workflows/build_and_test/badge.svg)](https://github.com/abice/go-enum/actions) [![Go Report Card](https://goreportcard.com/badge/github.com/abice/go-enum)](https://goreportcard.com/report/github.com/abice/go-enum) [![Coverage Status](https://coveralls.io/repos/github/abice/go-enum/badge.svg)](https://coveralls.io/github/abice/go-enum) [![GoDoc](https://godoc.org/github.com/abice/go-enum?status.svg)](https://godoc.org/github.com/abice/go-enum) From f99dfa8b671f3477b5495b327b0b4380f437a4c8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 4 Sep 2021 11:01:24 -0700 Subject: [PATCH 09/91] Bump github.com/stretchr/testify from 1.4.0 to 1.7.0 (#57) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.4.0 to 1.7.0. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.4.0...v1.7.0) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alex Bice --- go.mod | 2 +- go.sum | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index bd68e5ef..bad3c485 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/mitchellh/reflectwalk v1.0.1 // indirect github.com/pkg/errors v0.9.1 github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.4.0 + github.com/stretchr/testify v1.7.0 github.com/urfave/cli/v2 v2.3.0 golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9 // indirect golang.org/x/tools v0.1.5 diff --git a/go.sum b/go.sum index a0a101c1..fd5f3550 100644 --- a/go.sum +++ b/go.sum @@ -54,8 +54,9 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeV github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= @@ -101,3 +102,5 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 1012a12a04c7ea1e994691f86392881590e8734a Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Sat, 4 Sep 2021 14:29:38 -0700 Subject: [PATCH 10/91] update badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a99cfcf..68105bf0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # go-enum -[![Actions Status](https://github.com/abice/go-enum/workflows/build_and_test/badge.svg)](https://github.com/abice/go-enum/actions) +[![Actions Status](https://github.com/abice/go-enum/actions/workflows/build_and_test.yml/badge.svg)](https://github.com/abice/go-enum/actions/workflows/build_and_test.yml) [![Go Report Card](https://goreportcard.com/badge/github.com/abice/go-enum)](https://goreportcard.com/report/github.com/abice/go-enum) [![Coverage Status](https://coveralls.io/repos/github/abice/go-enum/badge.svg)](https://coveralls.io/github/abice/go-enum) [![GoDoc](https://godoc.org/github.com/abice/go-enum?status.svg)](https://godoc.org/github.com/abice/go-enum) From 2b856fec5e40ecea588c8fe3643ac6efdbc60b05 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Sun, 5 Sep 2021 09:42:06 -0700 Subject: [PATCH 11/91] add versioning (#64) * add versioning --- .github/workflows/build_and_test.yml | 5 + .github/workflows/release.yml | 46 +++++++++ .gitignore | 2 + .goreleaser.yml | 33 +++++++ Makefile | 22 +++-- example/animal_enum.go | 4 + example/color_enum.go | 4 + example/commented_enum.go | 4 + example/custom_prefix_enum.go | 4 + example/example_enum.go | 4 + example/globs/letter_enum.go | 7 +- example/globs/number_enum.go | 7 +- example/sql_enum.go | 4 + example/sql_int_enum.go | 4 + example/sql_mock_test.go | 95 ++++++++++--------- example/sql_str_enum.go | 4 + example/user_template_enum.go | 4 + .../generator-TestCustomPrefixExampleFile | 6 +- .../.snapshots/generator-TestExampleFile | 6 +- .../generator-TestNoPrefixExampleFile | 6 +- ...or-TestNoPrefixExampleFileWithSnakeToCamel | 6 +- generator/assets/assets.go | 6 +- generator/enum.tmpl | 4 + generator/generator.go | 16 +++- go.mod | 18 ++-- go.sum | 39 ++++---- main.go | 11 +++ 27 files changed, 281 insertions(+), 90 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 .goreleaser.yml diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 6d4e18ba..9edf7637 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -38,3 +38,8 @@ jobs: if [[ -n "$COVERALLS_TOKEN" ]]; then make coveralls fi + - name: Upload coverage + uses: actions/upload-artifact@v2 + with: + name: coverage + path: coverage.* diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..2db14eed --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,46 @@ +name: goreleaser + +on: + release: + types: + - "created" + +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.16 + + - name: Cache Go modules + uses: actions/cache@v1 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + + - name: Install GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + install-only: true + - name: Show GoReleaser version + run: goreleaser -v + + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + if: success() && startsWith(github.ref, 'refs/tags/') + with: + # either 'goreleaser' (default) or 'goreleaser-pro' + distribution: goreleaser + version: latest + args: release --rm-dist + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 6fb76ba6..67a2ddaf 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,5 @@ vendor/ coverage.out coverage.html + +dist/ diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 00000000..14c2e760 --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,33 @@ +# This is an example .goreleaser.yml file with some sane defaults. +# Make sure to check the documentation at http://goreleaser.com +before: + hooks: + # You may remove this if you don't use go modules. + - go mod tidy + # you may remove this if you don't need go generate + - go generate ./generator +builds: + - env: + - CGO_ENABLED=0 + goos: + - linux + - windows + - darwin + +archives: + - replacements: + darwin: Darwin + linux: Linux + windows: Windows + 386: i386 + amd64: x86_64 +checksum: + name_template: "checksums.txt" +snapshot: + name_template: "{{ incpatch .Version }}-next" +changelog: + sort: asc + filters: + exclude: + - "^docs:" + - "^test:" diff --git a/Makefile b/Makefile index 99912d97..230ad113 100644 --- a/Makefile +++ b/Makefile @@ -6,13 +6,23 @@ else endif GO ?= GO111MODULE=on go -COVERAGEDIR = coverage +COVERAGEDIR= coverage SERVICE=local -ifdef CIRCLE_WORKING_DIRECTORY - COVERAGEDIR = $(CIRCLE_WORKING_DIRECTORY)/coverage - SERVICE=circle-ci + +ifdef GITHUB_ACTIONS +SERVICE=github-actions endif +DATE := $(shell date -u '+%FT%T%z') +GITHUB_SHA ?= $(shell git rev-parse HEAD) +GITHUB_REF ?= local + +LDFLAGS += -X "main.version=$(GITHUB_REF)" +LDFLAGS += -X "main.commit=$(GITHUB_SHA)" +LDFLAGS += -X "main.date=$(DATE)" +LDFLAGS += -X "main.builtBy=$(USER)" +LDFLAGS += -extldflags '-static' + define goinstall mkdir -p $(shell pwd)/bin echo "Installing $(1)" @@ -26,7 +36,6 @@ MOCKGEN=bin/mockgen deps: $(MOCKGEN) deps: $(GOBINDATA) deps: $(GOIMPORTS) -deps: $(GOVERALLS) PACKAGES='./generator' './example' @@ -36,7 +45,7 @@ all: build fmt test example cover install build: deps $(GO) generate ./generator if [ ! -d bin ]; then mkdir bin; fi - $(GO) build -v -o bin/go-enum . + $(GO) build -v -o bin/go-enum -ldflags='-X "main.version=example" -X "main.commit=example" -X "main.date=example" -X "main.builtBy=example"' . fmt: gofmt -l -w -s $$(find . -type f -name '*.go' -not -path "./vendor/*") @@ -56,6 +65,7 @@ clean: rm -f bin/go-enum rm -rf coverage/ rm -rf bin/ + rm -rf dist/ .PHONY: generate generate: diff --git a/example/animal_enum.go b/example/animal_enum.go index be973027..6370e4fe 100644 --- a/example/animal_enum.go +++ b/example/animal_enum.go @@ -1,4 +1,8 @@ // Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example package example diff --git a/example/color_enum.go b/example/color_enum.go index 0904bc9b..c982bde2 100644 --- a/example/color_enum.go +++ b/example/color_enum.go @@ -1,4 +1,8 @@ // Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example package example diff --git a/example/commented_enum.go b/example/commented_enum.go index 9b447248..db60df54 100644 --- a/example/commented_enum.go +++ b/example/commented_enum.go @@ -1,4 +1,8 @@ // Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example package example diff --git a/example/custom_prefix_enum.go b/example/custom_prefix_enum.go index fea68f48..dc330742 100644 --- a/example/custom_prefix_enum.go +++ b/example/custom_prefix_enum.go @@ -1,4 +1,8 @@ // Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example package example diff --git a/example/example_enum.go b/example/example_enum.go index e64ff245..d213408f 100644 --- a/example/example_enum.go +++ b/example/example_enum.go @@ -1,4 +1,8 @@ // Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example package example diff --git a/example/globs/letter_enum.go b/example/globs/letter_enum.go index 62212c5a..77048521 100644 --- a/example/globs/letter_enum.go +++ b/example/globs/letter_enum.go @@ -1,5 +1,8 @@ -// Code generated by go-enum -// DO NOT EDIT! +// Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example package globs diff --git a/example/globs/number_enum.go b/example/globs/number_enum.go index 05472e72..7c4c3e2a 100644 --- a/example/globs/number_enum.go +++ b/example/globs/number_enum.go @@ -1,5 +1,8 @@ -// Code generated by go-enum -// DO NOT EDIT! +// Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example package globs diff --git a/example/sql_enum.go b/example/sql_enum.go index 4d8a5f25..a7bf4bac 100644 --- a/example/sql_enum.go +++ b/example/sql_enum.go @@ -1,4 +1,8 @@ // Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example package example diff --git a/example/sql_int_enum.go b/example/sql_int_enum.go index 8bb9f632..cebd18dc 100644 --- a/example/sql_int_enum.go +++ b/example/sql_int_enum.go @@ -1,4 +1,8 @@ // Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example package example diff --git a/example/sql_mock_test.go b/example/sql_mock_test.go index 6c0e8ec0..baa32a5e 100644 --- a/example/sql_mock_test.go +++ b/example/sql_mock_test.go @@ -6,34 +6,35 @@ package example import ( driver "database/sql/driver" - gomock "github.com/golang/mock/gomock" reflect "reflect" + + gomock "github.com/golang/mock/gomock" ) -// MockConn is a mock of Conn interface +// MockConn is a mock of Conn interface. type MockConn struct { ctrl *gomock.Controller recorder *MockConnMockRecorder } -// MockConnMockRecorder is the mock recorder for MockConn +// MockConnMockRecorder is the mock recorder for MockConn. type MockConnMockRecorder struct { mock *MockConn } -// NewMockConn creates a new mock instance +// NewMockConn creates a new mock instance. func NewMockConn(ctrl *gomock.Controller) *MockConn { mock := &MockConn{ctrl: ctrl} mock.recorder = &MockConnMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockConn) EXPECT() *MockConnMockRecorder { return m.recorder } -// Begin mocks base method +// Begin mocks base method. func (m *MockConn) Begin() (driver.Tx, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Begin") @@ -42,13 +43,13 @@ func (m *MockConn) Begin() (driver.Tx, error) { return ret0, ret1 } -// Begin indicates an expected call of Begin +// Begin indicates an expected call of Begin. func (mr *MockConnMockRecorder) Begin() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Begin", reflect.TypeOf((*MockConn)(nil).Begin)) } -// Close mocks base method +// Close mocks base method. func (m *MockConn) Close() error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Close") @@ -56,13 +57,13 @@ func (m *MockConn) Close() error { return ret0 } -// Close indicates an expected call of Close +// Close indicates an expected call of Close. func (mr *MockConnMockRecorder) Close() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Close", reflect.TypeOf((*MockConn)(nil).Close)) } -// Prepare mocks base method +// Prepare mocks base method. func (m *MockConn) Prepare(arg0 string) (driver.Stmt, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Prepare", arg0) @@ -71,36 +72,36 @@ func (m *MockConn) Prepare(arg0 string) (driver.Stmt, error) { return ret0, ret1 } -// Prepare indicates an expected call of Prepare +// Prepare indicates an expected call of Prepare. func (mr *MockConnMockRecorder) Prepare(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Prepare", reflect.TypeOf((*MockConn)(nil).Prepare), arg0) } -// MockDriver is a mock of Driver interface +// MockDriver is a mock of Driver interface. type MockDriver struct { ctrl *gomock.Controller recorder *MockDriverMockRecorder } -// MockDriverMockRecorder is the mock recorder for MockDriver +// MockDriverMockRecorder is the mock recorder for MockDriver. type MockDriverMockRecorder struct { mock *MockDriver } -// NewMockDriver creates a new mock instance +// NewMockDriver creates a new mock instance. func NewMockDriver(ctrl *gomock.Controller) *MockDriver { mock := &MockDriver{ctrl: ctrl} mock.recorder = &MockDriverMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockDriver) EXPECT() *MockDriverMockRecorder { return m.recorder } -// Open mocks base method +// Open mocks base method. func (m *MockDriver) Open(arg0 string) (driver.Conn, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Open", arg0) @@ -109,36 +110,36 @@ func (m *MockDriver) Open(arg0 string) (driver.Conn, error) { return ret0, ret1 } -// Open indicates an expected call of Open +// Open indicates an expected call of Open. func (mr *MockDriverMockRecorder) Open(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Open", reflect.TypeOf((*MockDriver)(nil).Open), arg0) } -// MockStmt is a mock of Stmt interface +// MockStmt is a mock of Stmt interface. type MockStmt struct { ctrl *gomock.Controller recorder *MockStmtMockRecorder } -// MockStmtMockRecorder is the mock recorder for MockStmt +// MockStmtMockRecorder is the mock recorder for MockStmt. type MockStmtMockRecorder struct { mock *MockStmt } -// NewMockStmt creates a new mock instance +// NewMockStmt creates a new mock instance. func NewMockStmt(ctrl *gomock.Controller) *MockStmt { mock := &MockStmt{ctrl: ctrl} mock.recorder = &MockStmtMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockStmt) EXPECT() *MockStmtMockRecorder { return m.recorder } -// Close mocks base method +// Close mocks base method. func (m *MockStmt) Close() error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Close") @@ -146,13 +147,13 @@ func (m *MockStmt) Close() error { return ret0 } -// Close indicates an expected call of Close +// Close indicates an expected call of Close. func (mr *MockStmtMockRecorder) Close() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Close", reflect.TypeOf((*MockStmt)(nil).Close)) } -// Exec mocks base method +// Exec mocks base method. func (m *MockStmt) Exec(arg0 []driver.Value) (driver.Result, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Exec", arg0) @@ -161,13 +162,13 @@ func (m *MockStmt) Exec(arg0 []driver.Value) (driver.Result, error) { return ret0, ret1 } -// Exec indicates an expected call of Exec +// Exec indicates an expected call of Exec. func (mr *MockStmtMockRecorder) Exec(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Exec", reflect.TypeOf((*MockStmt)(nil).Exec), arg0) } -// NumInput mocks base method +// NumInput mocks base method. func (m *MockStmt) NumInput() int { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "NumInput") @@ -175,13 +176,13 @@ func (m *MockStmt) NumInput() int { return ret0 } -// NumInput indicates an expected call of NumInput +// NumInput indicates an expected call of NumInput. func (mr *MockStmtMockRecorder) NumInput() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NumInput", reflect.TypeOf((*MockStmt)(nil).NumInput)) } -// Query mocks base method +// Query mocks base method. func (m *MockStmt) Query(arg0 []driver.Value) (driver.Rows, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Query", arg0) @@ -190,36 +191,36 @@ func (m *MockStmt) Query(arg0 []driver.Value) (driver.Rows, error) { return ret0, ret1 } -// Query indicates an expected call of Query +// Query indicates an expected call of Query. func (mr *MockStmtMockRecorder) Query(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Query", reflect.TypeOf((*MockStmt)(nil).Query), arg0) } -// MockResult is a mock of Result interface +// MockResult is a mock of Result interface. type MockResult struct { ctrl *gomock.Controller recorder *MockResultMockRecorder } -// MockResultMockRecorder is the mock recorder for MockResult +// MockResultMockRecorder is the mock recorder for MockResult. type MockResultMockRecorder struct { mock *MockResult } -// NewMockResult creates a new mock instance +// NewMockResult creates a new mock instance. func NewMockResult(ctrl *gomock.Controller) *MockResult { mock := &MockResult{ctrl: ctrl} mock.recorder = &MockResultMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockResult) EXPECT() *MockResultMockRecorder { return m.recorder } -// LastInsertId mocks base method +// LastInsertId mocks base method. func (m *MockResult) LastInsertId() (int64, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "LastInsertId") @@ -228,13 +229,13 @@ func (m *MockResult) LastInsertId() (int64, error) { return ret0, ret1 } -// LastInsertId indicates an expected call of LastInsertId +// LastInsertId indicates an expected call of LastInsertId. func (mr *MockResultMockRecorder) LastInsertId() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LastInsertId", reflect.TypeOf((*MockResult)(nil).LastInsertId)) } -// RowsAffected mocks base method +// RowsAffected mocks base method. func (m *MockResult) RowsAffected() (int64, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "RowsAffected") @@ -243,36 +244,36 @@ func (m *MockResult) RowsAffected() (int64, error) { return ret0, ret1 } -// RowsAffected indicates an expected call of RowsAffected +// RowsAffected indicates an expected call of RowsAffected. func (mr *MockResultMockRecorder) RowsAffected() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RowsAffected", reflect.TypeOf((*MockResult)(nil).RowsAffected)) } -// MockRows is a mock of Rows interface +// MockRows is a mock of Rows interface. type MockRows struct { ctrl *gomock.Controller recorder *MockRowsMockRecorder } -// MockRowsMockRecorder is the mock recorder for MockRows +// MockRowsMockRecorder is the mock recorder for MockRows. type MockRowsMockRecorder struct { mock *MockRows } -// NewMockRows creates a new mock instance +// NewMockRows creates a new mock instance. func NewMockRows(ctrl *gomock.Controller) *MockRows { mock := &MockRows{ctrl: ctrl} mock.recorder = &MockRowsMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockRows) EXPECT() *MockRowsMockRecorder { return m.recorder } -// Close mocks base method +// Close mocks base method. func (m *MockRows) Close() error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Close") @@ -280,13 +281,13 @@ func (m *MockRows) Close() error { return ret0 } -// Close indicates an expected call of Close +// Close indicates an expected call of Close. func (mr *MockRowsMockRecorder) Close() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Close", reflect.TypeOf((*MockRows)(nil).Close)) } -// Columns mocks base method +// Columns mocks base method. func (m *MockRows) Columns() []string { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Columns") @@ -294,13 +295,13 @@ func (m *MockRows) Columns() []string { return ret0 } -// Columns indicates an expected call of Columns +// Columns indicates an expected call of Columns. func (mr *MockRowsMockRecorder) Columns() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Columns", reflect.TypeOf((*MockRows)(nil).Columns)) } -// Next mocks base method +// Next mocks base method. func (m *MockRows) Next(arg0 []driver.Value) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Next", arg0) @@ -308,7 +309,7 @@ func (m *MockRows) Next(arg0 []driver.Value) error { return ret0 } -// Next indicates an expected call of Next +// Next indicates an expected call of Next. func (mr *MockRowsMockRecorder) Next(arg0 interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Next", reflect.TypeOf((*MockRows)(nil).Next), arg0) diff --git a/example/sql_str_enum.go b/example/sql_str_enum.go index 66e632cf..8956c680 100644 --- a/example/sql_str_enum.go +++ b/example/sql_str_enum.go @@ -1,4 +1,8 @@ // Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example package example diff --git a/example/user_template_enum.go b/example/user_template_enum.go index 45b5a218..e9dc7b2b 100644 --- a/example/user_template_enum.go +++ b/example/user_template_enum.go @@ -1,4 +1,8 @@ // Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example package example diff --git a/generator/.snapshots/generator-TestCustomPrefixExampleFile b/generator/.snapshots/generator-TestCustomPrefixExampleFile index a4f8f000..bbb4a2a7 100644 --- a/generator/.snapshots/generator-TestCustomPrefixExampleFile +++ b/generator/.snapshots/generator-TestCustomPrefixExampleFile @@ -1,5 +1,9 @@ -([]string) (len=3051) { +([]string) (len=3055) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", (string) "", (string) (len=17) "package generator", (string) "", diff --git a/generator/.snapshots/generator-TestExampleFile b/generator/.snapshots/generator-TestExampleFile index c07c3f7f..a5dacc38 100644 --- a/generator/.snapshots/generator-TestExampleFile +++ b/generator/.snapshots/generator-TestExampleFile @@ -1,5 +1,9 @@ -([]string) (len=1823) { +([]string) (len=1827) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", (string) "", (string) (len=17) "package generator", (string) "", diff --git a/generator/.snapshots/generator-TestNoPrefixExampleFile b/generator/.snapshots/generator-TestNoPrefixExampleFile index 21c66cbf..829de7d8 100644 --- a/generator/.snapshots/generator-TestNoPrefixExampleFile +++ b/generator/.snapshots/generator-TestNoPrefixExampleFile @@ -1,5 +1,9 @@ -([]string) (len=989) { +([]string) (len=993) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", (string) "", (string) (len=17) "package generator", (string) "", diff --git a/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel b/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel index 13115b9f..bef86e1b 100644 --- a/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel +++ b/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel @@ -1,5 +1,9 @@ -([]string) (len=989) { +([]string) (len=993) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", (string) "", (string) (len=17) "package generator", (string) "", diff --git a/generator/assets/assets.go b/generator/assets/assets.go index 03dcd055..01647f8b 100644 --- a/generator/assets/assets.go +++ b/generator/assets/assets.go @@ -1,6 +1,6 @@ // Code generated by go-bindata. DO NOT EDIT. // sources: -// enum.tmpl (8.266kB) +// enum.tmpl (8.354kB) package assets @@ -69,7 +69,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _enumTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x19\x4d\x8f\xdb\xb8\xf5\x6c\xfd\x8a\x17\x21\xd9\x95\x5c\x47\x4e\xd1\xa2\x87\x2c\xe6\x10\x64\xd3\x60\x17\xcd\x24\xc0\xa4\x7b\x09\x82\x80\x96\x9e\xc6\xdc\x91\x48\x2d\x49\x79\xe4\xaa\xfa\xef\xc5\x23\x29\x59\xd6\xc8\x33\xd3\x74\x66\x83\x62\x2f\x86\x45\x3e\xbe\xef\x4f\xb2\x6d\x9f\x43\x86\x39\x17\x08\xe1\x16\x59\x86\x2a\xec\xba\x60\xbd\x86\xd7\x32\x43\xb8\x44\x81\x8a\x19\xcc\x60\xb3\x87\x4b\xf9\x1c\x45\x5d\xd2\xe6\x8f\xef\xe1\xfc\xfd\x47\x78\xf3\xe3\x4f\x1f\x9f\x04\x41\xc5\xd2\x2b\x76\x89\xd0\xb6\x89\xff\xdb\x75\x41\xc0\xcb\x4a\x2a\x03\x51\x00\x00\x10\xe6\xa5\x09\x83\x38\x68\x5b\x14\x19\x3c\xa7\xfd\x31\x65\xc2\x4b\x74\x53\x29\x34\x1d\xa1\xbd\xa7\xb4\x78\xce\x4a\x84\x97\x67\x90\xd0\x47\x62\xbf\xe8\xb0\xdd\xdf\x31\xa5\x69\x2f\xe3\xa9\x81\xb0\x60\xda\xc8\x3c\xd7\x68\x42\x78\xe1\x81\x40\x31\x71\x89\xf0\x54\xfd\x24\x32\x6c\x56\x74\xa4\xa8\x47\xf8\x7e\xa1\x4f\x0d\x5d\x17\x2c\x2c\x46\xc2\xf1\xde\xe2\x20\x98\xaa\xa8\xd3\xab\x63\xc4\x8e\xe6\xbf\x21\xe7\x4a\x1b\xe8\xba\xb6\x85\xa7\x72\x38\xa0\xeb\x8d\x27\xe1\x30\xf7\x84\x3d\x01\xe0\x39\xe0\x6f\x3d\x84\x95\x25\xfc\x12\x76\xdd\x7a\x0d\x17\x57\xbc\xaa\x30\x03\xb7\xd5\xb6\x58\x68\xb4\x1b\x6d\xeb\xc1\x3f\x28\xcc\x79\x83\x19\x1d\xeb\x3a\xe0\x1a\x18\x6d\xf6\x3a\xea\x3a\x90\x39\x98\x7d\x85\x87\x23\x6e\x3d\xb1\x2a\xef\x45\xe4\x79\x4f\xff\xb5\x2c\x4b\x14\x86\x36\xc6\x74\x46\xcb\x04\xef\x8e\x92\x05\x4f\x71\x72\x90\xcb\x0b\xfb\xc2\xea\x65\xcc\xd9\x19\x70\x69\x98\x03\x14\x08\x2f\x06\x9d\x75\x1d\xfc\x09\x46\x3a\xa4\x83\x96\xa2\xd3\x80\x87\x1f\x9b\x65\x0c\x79\x93\xc4\x49\x6c\x4f\xbf\x58\xfb\x10\x02\x6b\xc1\x63\xa3\xba\x3f\xde\xad\x9c\xc4\x31\xf9\x27\x18\x2c\xab\x82\x19\x84\x50\x1b\xc5\xc5\x25\xaa\x10\x12\xb2\x26\xc5\xc0\x07\xa6\x34\xb6\xed\xc1\x33\xbb\x0e\x98\xa1\x23\x46\x83\x91\x90\x4a\xb1\x43\x65\x80\x81\x3b\x4c\x6b\x64\xb3\xf1\x81\x20\xaf\x45\x3a\x87\x29\x12\xe4\x1e\xee\x60\x0c\xd1\xf1\xe6\x0a\x50\x29\xa9\x62\x68\x83\x05\xcf\xa1\x59\x81\xbc\x22\xf9\xbe\x1c\x83\x59\x1f\xfc\x44\x88\x3e\xff\x40\x10\x6d\xb0\x58\x28\x34\xb5\x12\x74\x44\xf0\x22\x58\x74\x6d\xcb\x73\x48\x84\x4c\x99\x46\xf0\xbe\xf0\x9a\xfe\x73\xa1\x51\x68\x6e\xf8\x0e\xa1\x22\xfe\x56\x90\x11\xff\x1a\x2b\x46\x19\x01\x0a\x29\xaf\xea\x8a\x84\xaa\x14\xee\x50\x18\xa8\x85\xc0\x14\xb5\x66\x6a\x0f\xa9\xd4\x86\x3c\xb2\x90\xd7\xa8\x52\xa6\x49\xfe\x41\x11\x3c\x87\x6b\x84\x4c\x8a\xef\x0d\x08\xc4\x0c\x8c\x4c\xee\x21\x89\x3b\xad\x93\x8f\xf2\x1f\x84\xd5\xaa\x28\xbe\x4d\xb4\xde\x98\x0b\x2f\x25\x2b\x51\xdb\xcc\xd0\xc3\x4e\x74\xfe\x22\x5e\x41\x5e\x9a\xe4\x0d\x69\x37\x8f\xc2\x67\x9a\xe2\x4c\x48\xb2\xe1\x8e\x15\x3c\x83\xa9\x1d\x8c\xda\xc3\xa7\x67\xfa\x73\xb8\x02\xc2\xbe\x82\x9e\xc7\x9f\x25\x17\xd1\x44\x0a\xfa\xd5\x2b\x08\x57\x10\xc6\xb1\x0f\x2f\xf2\xf2\x07\xe4\xc8\xf3\x11\x8f\x83\xd7\xa6\x5a\xd2\x79\x52\x19\x05\xbd\xcf\x45\xcd\xe4\x68\x0c\x1f\x8c\x8a\x62\x58\x4e\x5c\xba\x1d\x78\xfb\xae\x09\xba\xa0\xcf\x26\x3d\xce\x92\x29\xbd\x65\x05\xb8\xa2\xf1\xce\x7d\x7d\xc4\xc6\x00\x2f\xab\x02\x29\x97\x68\x30\x5b\x04\x43\x6b\x1e\xba\x40\x05\x25\x9a\xad\xcc\x4e\x32\x33\xc2\x14\xc5\x10\x7d\xfa\xbc\xd9\x1b\x1c\x3b\xbe\x67\xca\x6d\x44\x4d\x72\x61\x35\x1f\xc5\xb1\xb3\xbf\x8b\xd1\x7f\x8a\xf2\x0e\x8e\x6a\x71\x9a\xa7\xe5\x94\xa9\x23\x74\x91\x3d\xef\xe8\xc7\x8e\x31\xe2\x4b\xf8\x8a\xe5\x3c\xc1\x02\xc5\xc1\xc2\x94\x95\x65\x9e\x76\x4e\x85\x7b\x6c\x63\x80\x80\x9e\x9c\x91\x0c\x63\xaf\x46\xa5\x82\x45\x17\x2c\x96\x0d\x9c\x81\x29\xab\x41\x7e\x27\xeb\xc4\x2a\x52\x41\xa2\x7f\x2b\xec\x8f\xa8\x8b\x82\x0b\x33\xfc\xd7\x46\x75\x5d\xb0\x63\x6a\x1a\x64\x6f\x94\x3a\xe7\xc5\x07\xa3\xe0\xcc\x49\xa3\x93\x73\xbc\x8e\x42\x57\x33\x2b\xc9\x85\x41\x65\xdd\x8f\x17\x61\x0c\xeb\x35\x48\x81\x50\xa1\x72\x65\x27\x97\x0a\xfa\x46\x20\x2d\x98\xde\xa2\xb6\x26\xb8\x48\x99\x98\x6a\x9e\xd6\x04\x21\x23\x94\x39\x4b\x31\x39\xad\x73\x82\x8d\x1c\x0f\x03\x78\xdb\xc5\x10\x91\xa2\x8e\xf2\xa0\x03\x3a\x3b\xe8\xce\x2a\xeb\x46\x44\x0d\x4a\x25\x85\xda\x84\xf7\x0a\xae\x79\x86\xca\x77\x0b\x32\x07\x4d\xfc\xb1\x4d\x81\x56\x34\x9d\x58\xa8\x4c\xf1\x1d\x2a\x5f\xd9\x77\xae\x73\x60\xc6\x79\x92\xac\x6c\xf9\xdd\x22\x14\x5c\x1b\xab\x0b\x6c\x2a\xcc\x38\x8a\x74\x1f\x2c\xf4\x35\x37\xe9\x16\x76\x64\x7d\x57\x44\x23\x42\x6c\x19\x4f\x5d\xb6\x35\x7f\xfb\xeb\xcb\x13\x2c\xef\x62\x0f\xe5\x5c\xca\x81\x39\x6f\x9a\x77\xa6\x5d\xec\x12\xde\xc8\xfa\x94\x62\x66\xbc\x8b\xe4\xa2\x1c\x46\x19\xde\x96\xa8\xad\xd3\xf2\x25\x2a\xaf\x4e\xa6\x87\xbc\x4d\xf0\x4e\xcd\x2b\xd8\x79\x5f\xd6\x46\x51\x9d\x4b\x5e\x19\xc9\xa3\x5d\xfc\x83\xdb\x18\xd9\x60\xcc\xeb\x94\x4d\x56\xf8\x60\x5d\x2c\xc8\xb7\x17\xdd\xd0\xaa\x58\x71\x5d\x68\xdd\x2d\xae\x8f\xb4\x5d\xfc\x8d\xc4\x3e\xd0\x7f\x50\xf1\x8f\xc1\x07\xe7\xd8\x1d\x5c\xe6\x4e\x87\x59\xde\xc4\x41\x92\x78\x06\x2d\x7f\x3e\x8d\x9c\xca\x05\x81\x63\xcd\x52\x59\xf6\xa4\xeb\xfb\xd0\xae\xef\xe7\xd3\x4b\x8f\xeb\x7f\xe0\x6b\x82\x7a\x79\x84\xdb\xb1\xf0\x18\xd8\xf3\x42\x32\x42\x4f\x99\xf0\x57\x2d\x45\x5f\xdc\x34\xe0\x0e\xd5\xde\x6c\x6d\xcf\x43\x7e\xe4\x21\x29\x33\x73\xf3\x3d\xad\x88\xba\xdc\xa0\xba\x53\x37\x0f\x42\xe2\x51\x34\x5b\x3f\xa6\xd9\xea\x47\xb5\xdb\xf2\x90\x46\xbf\x16\xfd\x6d\xd9\x68\xf9\xad\xb2\xef\xf2\xe1\xd2\x6f\x17\x2c\x86\x06\x23\x38\xd9\x55\x68\xd7\x4e\xae\xd7\xe0\x6a\xe2\xa4\xc8\xbb\x7a\xe9\xf6\x66\x4b\xfd\xb4\xd2\x5b\x48\x6a\xf6\xc6\x95\x76\xa6\xe5\x3b\xf4\x7a\xab\xa1\xfd\x71\x9d\xf4\xb7\xe0\xc6\xfa\x6a\xd4\x8c\x78\x19\x5a\x31\xff\xa7\x6f\x95\xf3\x82\x5d\x7a\x16\x2f\xf0\x46\x37\xfa\x56\x16\x4c\x5c\x02\x01\xf9\x1e\x63\x60\x12\x88\xc7\xdb\x5a\x24\x34\x64\xcd\x61\x5c\x1c\x7a\xd1\xdd\xad\x3d\x27\x39\x40\x30\x14\x95\x51\xa3\xe9\x7a\xe7\xb7\xb7\xf3\xf8\x16\x8d\x19\x6b\xf2\x2e\x26\xdf\x22\x35\xf2\xa3\x16\x6e\xa4\xc3\x65\xe3\x69\x7e\xa4\x4e\x72\x42\xf4\x92\x9b\x6d\xbd\x49\x52\x59\xae\x75\x95\xff\xf9\x2f\xeb\xea\xef\xa4\xc8\x89\x8e\x6e\xa1\x4c\x48\xa3\xb8\x1f\x3e\x0f\x54\xc3\xc9\xec\x74\xb2\x8f\x9e\x69\xa1\xc9\x8e\xb6\xed\x3d\xaf\x8b\x62\x32\x31\x69\xa3\xea\xd4\xb4\x34\x83\x8d\xd7\x27\x9f\xc1\xe2\x17\x3b\xc0\x51\x8c\x2e\x36\x52\x16\x6d\xbb\x5e\xc2\xab\x2c\x03\x2d\x4b\x12\x2c\x97\x14\xfe\x46\xc2\xf5\x16\xcd\x96\xda\xec\x2d\xd7\x3e\x2f\x5c\x33\x6d\x6f\x33\xb2\xda\xca\x74\x18\x62\xe8\x4b\x2a\x3b\x21\x2e\xd7\x9d\x1f\xef\x47\x33\xda\xe2\x02\xcd\x62\x31\xa2\x49\x43\x22\xb8\x29\xd1\x2a\xf0\x1c\xaf\x6f\x8a\x64\xbd\xeb\xb8\xfb\x6e\x66\x24\xb7\x61\xd1\x24\x7d\xc7\x6e\x67\x84\x3d\x8d\xbc\xd7\x08\xfc\x52\x48\x85\x4e\x06\xeb\x9f\x2b\xe0\x06\xae\x79\x51\xc0\xaf\xb5\x36\xb0\x41\xa0\x39\x41\xb8\xa9\xd6\x35\xc9\xbd\xa5\xbc\x73\xfc\xb7\x93\xc4\x1c\x83\xf7\x9c\x26\xfc\x55\xd9\x48\x73\x4d\x42\x31\x7b\x06\x46\xd5\x78\xd0\xda\xec\xd8\xd1\x24\xd3\x6b\x82\x26\x71\xb6\x9e\x99\x46\x56\x90\xb3\x42\xe3\x64\x28\x71\x09\x7b\x8a\x28\x39\x70\x1f\x93\xa2\x7b\xa4\xd1\x21\xe9\xc7\x63\x9d\xf9\xbc\x73\x5c\x88\xbe\x3a\x41\xce\xa9\xf3\xce\x24\xc9\x73\x78\xe2\x19\x1d\x4d\xb3\x82\x17\xfd\x2d\xcd\xcd\xd1\x8a\xa5\x29\x56\x46\xbb\xc4\x6a\x47\x29\xe2\xdc\x0d\x5c\xc9\x34\xed\x4e\x34\xf4\xa0\x15\xe1\xb1\x04\x1e\xca\xd8\xd4\xba\x33\x55\xcd\xb9\xd9\xad\x97\x2d\x3f\x5f\xbc\x3f\x87\x54\x2a\x85\xa9\x29\xf6\xa0\x51\x71\x56\xf0\x7f\xd1\x74\x3a\x97\x9d\x8c\x04\x3a\xd1\x8b\x29\x66\xc5\x1c\xa1\x9e\xbf\x7d\x71\x17\xf5\xe4\x56\x17\xf6\xc2\x20\xa4\xbf\xa1\x15\x5f\x78\xbf\x1c\x89\x4f\xbd\x6b\xe2\x71\x46\x62\x6a\xb3\xb1\x52\xfc\x75\x8e\x47\x3c\x7f\x97\x33\x11\x38\xc3\xbb\x44\xce\x95\x2c\x27\x42\xcf\x26\x87\x23\x0a\xd1\x66\xe6\x6e\x67\x94\x04\x82\xc5\x8e\x29\x68\xc6\x69\xc4\xc5\xed\xcb\x33\x27\xef\x80\x2d\xda\xac\xe0\xbb\x66\x7a\xbb\x33\x73\xb9\xe3\xa2\x5e\xb8\x30\x6f\xe2\x49\x4d\x3e\x76\x87\x63\xcf\x60\x22\xfb\x8a\x4a\x45\xa6\x73\xc5\x8a\x84\xbb\xb9\x7f\x7b\x51\xb8\x30\xea\x9e\x75\x81\x2c\xf9\xb8\xa5\xe1\xa1\x02\xdc\x72\xfa\x3b\xc7\xf8\xef\x18\xd8\x56\xbc\x3f\x62\x6c\x5b\xc1\xff\x5f\xc2\xfb\x28\xba\x0f\x33\xc4\xe1\xb5\x74\x78\x8c\x1a\x5e\x4c\x67\x5e\x1a\xc8\x70\x6d\xeb\xbb\x5e\x9e\xef\xdd\x93\x27\x50\x9f\xdb\x7b\x9d\x7b\x10\xe9\xba\x99\xcb\x60\xfb\x56\x61\xfb\x15\xc1\xca\xe1\xb4\x7f\xf9\x9a\x03\x75\xb2\x90\x91\xec\x0d\xa8\xcc\xa1\x92\x5a\xf3\x4d\xd1\x5f\x5b\xf6\x57\xa6\x32\x9f\x9c\xf7\x86\x9b\x41\x1a\xc5\xf0\xe9\xf3\xa1\x6d\x37\x65\x45\xda\x2f\xd9\x15\x46\xfd\xfa\x0a\x0a\x9c\x7f\x68\x89\x69\xde\x97\xd5\x3e\xb2\x57\xef\xb3\x10\x83\x05\x4c\x59\x1d\x2c\x60\x1f\xa7\x67\x54\xf2\x8e\x55\x56\x21\x50\xb2\x6a\xac\x4f\xd7\x9b\xfa\x97\xad\x49\x77\xea\x0d\x75\x9f\x79\xb3\xcf\x0c\xa3\x39\x85\xe7\xf4\x71\xe2\x4d\xec\x1d\xab\x3e\x35\x37\x5e\xbf\xb4\x51\xe3\x90\xcb\x4b\x93\x5c\x54\x8a\x0b\x93\x47\x93\x71\x27\x7a\x96\xc5\xe1\x0a\x9a\x38\x98\x17\xd7\xa5\x54\x2b\x30\x8d\x17\x23\x91\x93\xfe\x51\x0f\x8f\x7c\xf4\x3f\x01\x00\x00\xff\xff\x9f\x4d\x58\xd0\x4a\x20\x00\x00") +var _enumTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x59\xdf\x8f\xdb\xb8\xf1\x7f\xb6\xfe\x8a\x89\x91\xdc\x49\xfe\x3a\x72\xbe\x68\xd1\x87\x1c\xf6\x21\x4d\xd2\xe0\x0e\xcd\x26\xe8\xa6\x79\x59\x04\x01\x2d\x8d\xd6\xbc\x95\x48\x1d\x49\xd9\x72\x55\xfd\xef\xc5\x90\x94\x2c\x6b\xe5\xdd\x6d\xba\x7b\x41\xd1\x17\xc3\x12\x87\xc3\xf9\xcc\xef\xa1\x9a\xe6\x39\xa4\x98\x71\x81\x30\xdf\x20\x4b\x51\xcd\xdb\x36\x58\xad\xe0\xb5\x4c\x11\xae\x50\xa0\x62\x06\x53\x58\xef\xe1\x4a\x3e\x47\x51\x15\xb4\xf8\x19\x95\xe6\x52\xbc\x84\xa6\x81\x78\xeb\x1e\xc0\xed\xfb\x1b\x6e\xf9\x61\x4d\xf9\x27\xbf\xf8\xe7\x8a\xe7\x29\xbc\x61\x06\xdd\xf2\x9a\x9e\xe9\xd1\xaf\xbf\xf9\x00\xe7\x1f\x3e\xc1\xdb\x37\x3f\x7f\x7a\x12\x04\x25\x4b\xae\xd9\x15\x42\xd3\xc4\xfe\x6f\xdb\x06\x01\x2f\x4a\xa9\x0c\x84\x01\x00\xc0\x3c\x2b\xcc\x3c\x88\x82\xa6\x41\x91\xc2\x73\x5a\x1f\x22\x22\x79\x09\x4f\x22\x85\xa6\x2d\xb4\xf6\x94\x5e\x9e\xb3\x02\xe1\xe5\x19\xc4\xf4\x10\xdb\x27\xda\x6c\xd7\xb7\x4c\x69\x5a\x4b\x79\x62\x60\x9e\x33\x6d\x64\x96\x69\x34\x73\x78\xe1\x89\x40\x31\x71\x85\xf0\x54\xfd\x2c\x52\xac\x97\xb4\x25\xaf\x06\xfc\x3e\xd3\xa3\x26\x4c\x33\xcb\x91\x78\x7c\xb0\x3c\x88\xa6\xcc\xab\xe4\xfa\x98\xb1\x3b\xf3\x9f\x90\x71\xa5\x0d\xb4\x6d\xd3\xc0\x53\xd9\x6f\xd0\xd5\xda\x1f\xe1\x38\x77\x07\xfb\x03\x80\x67\x80\xbf\x75\x14\x16\xcb\xfc\xeb\xbc\x6d\x57\x2b\xb8\xb8\xe6\x65\x89\x29\xb8\xa5\xa6\xc1\x5c\xa3\x5d\x68\x1a\x4f\xfe\x51\x61\xc6\x6b\x4c\x69\x5b\xdb\x02\xd7\xc0\x68\xb1\xd3\x51\xdb\x82\xcc\xc0\xec\x4b\x3c\x6c\x71\xef\x63\xab\xf2\x0e\x22\xcf\xba\xf3\x5f\xcb\xa2\x40\x61\x68\x61\x78\xce\xe0\x35\xd1\xbb\xad\x64\xc1\x53\x92\x1c\x70\x79\xb0\x2f\xac\x5e\x86\x92\x9d\x01\x97\x86\x39\x42\x81\xf0\xa2\xd7\x59\xdb\xc2\xff\xc1\x40\x87\xb4\xd1\x9e\xe8\x34\xe0\xe9\x87\x66\x19\x52\xde\x3c\xe2\x24\xb7\xa7\x5f\xad\x7d\x88\x81\xb5\xe0\xb1\x51\xdd\x1f\xef\x56\x0e\x71\x44\xfe\x09\x06\x8b\x32\x27\xaf\x9f\x6b\xa3\xb8\xb8\x42\x35\x87\x98\xac\x49\x31\xf0\x91\x29\x8d\x4d\x73\xf0\xcc\xb6\x05\x66\x68\x8b\xd1\x60\x24\x24\x52\x6c\x51\x19\x60\xe0\x36\xd3\x3b\xb2\xd9\x70\x43\x90\x55\x22\x99\xe2\x14\x0a\x72\x0f\xb7\x31\x82\xf0\x78\x71\x09\xa8\x94\x54\x11\x34\xc1\x8c\x67\x50\x2f\x41\x5e\x13\xbe\xaf\xc7\x64\xd6\x07\x2f\x89\xd1\x97\x9f\x88\xa2\x09\x66\x33\x85\xa6\x52\x82\xb6\x08\x9e\x07\xb3\xb6\x69\x78\x06\xb1\x90\x09\xd3\x36\xb6\xc9\x17\x5e\xd3\x7f\x2e\x34\x0a\xcd\x0d\xdf\x22\x94\x24\xdf\x12\x52\x92\x5f\x63\xc9\x28\xd3\x40\x2e\xe5\x75\x55\x12\xa8\x52\xe1\x16\x85\x81\x4a\x08\x4c\x50\x6b\xa6\xf6\x90\x48\x6d\xc8\x23\x73\xb9\x43\x95\x30\x4d\xf8\x7b\x45\xf0\x0c\x76\x08\xa9\x14\x3f\x1a\x10\x88\x29\x18\x19\xdf\x03\x89\xdb\xad\xe3\x4f\xf2\xaf\xc4\xd5\xaa\x28\xba\x0d\x5a\x67\xcc\x99\x47\xc9\x0a\xd4\x36\x33\x74\xb4\x23\x9d\xbf\x88\x96\x90\x15\x26\x7e\x4b\xda\xcd\xc2\xf9\x33\x4d\x71\x26\x24\xd9\x70\xcb\x72\x9e\xc2\xd8\x0e\x46\xed\xe1\xf2\x99\xfe\x32\x5f\x02\x71\x5f\x42\x27\xe3\x2f\x92\x8b\x70\x84\x82\x7e\xf5\x12\xe6\x4b\x98\x47\x91\x0f\x2f\xf2\xf2\x07\x94\xc8\xcb\x11\x0d\x83\xd7\xa6\x5a\xd2\x79\x5c\x1a\x05\x9d\xcf\x85\xf5\x68\x6b\x04\x1f\x8d\x0a\x23\x58\x8c\x5c\xba\xe9\x65\xfb\xa1\x0e\xda\xa0\xcb\x26\x1d\xcf\x82\x29\xbd\x61\xb9\xaf\x0b\xef\xdd\xd3\x27\xac\x0d\xf0\xa2\xcc\x91\x72\x89\x06\xb3\x41\x30\xf4\xce\x53\xe7\xa8\xa0\x40\xb3\x91\xe9\x49\x61\x06\x9c\xc2\x08\xc2\xcb\x2f\xeb\xbd\xc1\xa1\xe3\x7b\xa1\xdc\x42\x58\xc7\x17\x56\xf3\x61\x14\x39\xfb\xbb\x18\xfd\xbb\x28\xee\x90\xa8\x12\xa7\x65\x5a\x8c\x85\x3a\x62\x17\xda\xfd\xee\xfc\xc8\x09\x46\x72\x09\x5f\xb1\x9c\x27\x58\xa2\x28\x98\x99\xa2\xb4\xc2\xd3\xca\xa9\x70\x8f\x6c\x0c\x10\xd1\x93\x33\xc2\x30\xf4\x6a\x54\x2a\x98\xb5\xc1\x6c\x51\xc3\x19\x98\xa2\xec\xf1\x3b\xac\x23\xab\x48\x05\xb1\xfe\x2d\xb7\x3f\xa2\xca\x73\x2e\x4c\xff\x5f\x1b\xd5\xb6\xc1\x96\xa9\x71\x90\xbd\x55\xea\x9c\xe7\x1f\x8d\x82\x33\x87\x46\xc7\xe7\xb8\x0b\xe7\xae\x66\x96\x92\x0b\x83\xca\xba\x1f\xcf\xe7\x11\xac\x56\x20\x05\x42\x89\xca\x95\x9d\x4c\x2a\xe8\x1a\x81\x24\x67\x7a\x83\xda\x9a\xe0\x22\x61\x62\xac\x79\x7a\x27\x88\x19\xb1\xcc\x58\x82\xf1\x69\x9d\x13\x6d\xe8\x64\xe8\xc9\x9b\x36\x82\x90\x14\x75\x94\x07\x1d\xd1\xd9\x41\x77\x56\x59\x37\x22\xaa\x57\x2a\x29\xd4\x26\xbc\x57\xb0\xe3\x29\x2a\xdf\x2d\xc8\x0c\x34\xc9\xc7\xd6\x39\x5a\x68\x3a\xb6\x54\xa9\xe2\x5b\x54\xbe\xb2\x6f\x5d\xe7\xc0\x8c\xf3\x24\x59\xda\xf2\xbb\x41\xc8\xb9\x36\x56\x17\x58\x97\x98\x72\x14\xc9\x3e\x98\xe9\x1d\x37\xc9\x06\xb6\x64\x7d\x57\x44\x43\x62\x6c\x05\x4f\x5c\xb6\x35\x7f\xfa\xe3\xcb\x13\x22\x6f\x23\x4f\xe5\x5c\xca\x91\x39\x6f\x9a\x76\xa6\x6d\xe4\x12\xde\xc0\xfa\x94\x62\x26\xbc\x8b\x70\x51\x0e\xa3\x0c\x6f\x4b\xd4\xc6\x69\xf9\x0a\x95\x57\x27\xd3\x7d\xde\x26\x7a\xa7\xe6\x25\x6c\xbd\x2f\x6b\xa3\xa8\xce\xc5\xaf\x8c\xe4\xe1\x36\xfa\xc9\x2d\x0c\x6c\x30\x94\x75\x2c\x26\xcb\x7d\xb0\xce\x66\xe4\xdb\xb3\xb6\x6f\x55\x2c\x5c\x17\x5a\x77\xc3\xf5\x91\xb6\x8d\xbe\x13\xec\xc3\xf9\x0f\x0a\xff\x98\xbc\x77\x8e\xed\xc1\x65\xee\x74\x98\xc5\x4d\x1e\x84\xc4\x0b\x68\xe5\xf3\x69\xe4\x54\x2e\x08\x9c\x68\xf6\x94\x45\x77\x74\x75\x9f\xb3\xab\xfb\xf9\xf4\xc2\xf3\xfa\x0f\xe4\x1a\xb1\x5e\x1c\xf1\x76\x22\x3c\x06\xf7\x2c\x97\x8c\xd8\x53\x26\xfc\x55\x4b\xd1\x15\x37\x0d\xb8\x45\xb5\x37\x1b\xdb\xf3\x90\x1f\x79\x4a\xca\xcc\xdc\xfc\x48\x6f\x44\x55\xac\x51\xdd\xa9\x9b\x07\x39\xe2\x51\x34\x5b\x3d\xa6\xd9\xaa\x47\xb5\xdb\xe2\x90\x46\xbf\x95\xfd\x6d\xd9\x68\xf1\xbd\xb2\xef\xe2\xe1\xd2\x6f\x1b\xcc\xfa\x06\x23\x38\xd9\x55\x68\xd7\x4e\xae\x56\xe0\x6a\xe2\xa8\xc8\xbb\x7a\xe9\xd6\x26\x4b\xfd\xb8\xd2\x5b\x4a\x6a\xf6\x86\x95\x76\xa2\xe5\x3b\xf4\x7a\xcb\xbe\xfd\x71\x9d\xf4\xf7\x90\xc6\xfa\x6a\x58\x0f\x64\xe9\x5b\x31\xff\xa7\x6b\x95\xb3\x9c\x5d\x79\x11\x2f\xf0\x46\x37\xfa\x4e\xe6\x4c\x5c\x01\x11\xf9\x1e\xa3\x17\x12\x48\xc6\xdb\x5a\x24\x34\x64\xcd\x7e\x5c\xec\x7b\xd1\xed\xad\x3d\x27\x39\x40\xd0\x17\x95\x41\xa3\xe9\x7a\xe7\x77\xb7\xcb\xf8\x0e\x8d\x19\x6a\xf2\x2e\x21\xdf\x21\x35\xf2\x83\x16\x6e\xa0\xc3\x45\xed\xcf\xfc\x44\x9d\xe4\xe8\xd0\x2b\x6e\x36\xd5\x3a\x4e\x64\xb1\xd2\x65\xf6\xff\x7f\x58\x95\x7f\x21\x45\x8e\x74\x74\xcb\xc9\xc4\x34\x8c\xba\xe1\xf3\x70\xea\x7c\x34\x3b\x9d\xec\xa3\x27\x5a\x68\xb2\xa3\x6d\x7b\xcf\xab\x3c\x1f\x4d\x4c\xda\xa8\x2a\x31\x0d\xcd\x60\xc3\xf7\xa3\xc7\x60\xf6\xd9\x0e\x70\x14\xa3\xb3\xb5\x94\x79\xd3\xac\x16\xf0\x2a\x4d\x41\xcb\x82\x80\x65\x92\xc2\xdf\x48\xd8\x6d\xd0\x6c\xa8\xcd\xde\x70\xed\xf3\xc2\x8e\x69\x7b\x9b\x91\x56\x16\xd3\x61\x88\xa1\x27\xa9\xec\x84\xb8\x58\xb5\x7e\xbc\x1f\xcc\x68\xb3\x0b\x34\xb3\xd9\xe0\x4c\x1a\x12\xc1\x4d\x89\x56\x81\xe7\xb8\xbb\x09\xc9\x7a\xd7\x71\xf7\x5d\x4f\x20\xb7\x61\x51\xc7\x5d\xc7\x6e\x67\x84\x3d\x8d\xbc\x3b\x04\x7e\x25\xa4\x42\x87\xc1\xfa\xe7\x12\xb8\x81\x1d\xcf\x73\xf8\xb5\xd2\x06\xd6\x08\x34\x27\x08\x37\xd5\xba\x26\xb9\xb3\x94\x77\x8e\x7f\x77\x92\x98\x12\xf0\x9e\xd3\x84\xbf\x2a\x1b\x68\xae\x8e\x29\x66\xcf\xc0\xa8\x0a\x0f\x5a\x9b\x1c\x3b\xea\x78\x7c\x4d\x50\xc7\xce\xd6\x13\xd3\xc8\x12\x32\x96\x6b\x1c\x0d\x25\x2e\x61\x8f\x19\xc5\x07\xe9\x23\x52\x74\xc7\x34\x3c\x24\xfd\x68\xa8\x33\x9f\x77\x8e\x0b\xd1\x37\x27\xc8\x29\x75\xde\x99\x24\x79\x06\x4f\xbc\xa0\x83\x69\x56\xf0\xbc\xbb\xa5\xb9\x39\x5a\xb1\x24\xc1\xd2\x68\x97\x58\xed\x28\x45\x92\xbb\x81\x2b\x1e\xa7\xdd\x91\x86\x1e\xb4\x22\x3c\x16\xe0\xbe\x8c\x8d\xad\x3b\x51\xd5\x9c\x9b\xdd\x7a\xd9\xf2\xcb\xc5\x87\x73\x48\xa4\x52\x98\x98\x7c\x0f\x1a\x15\x67\x39\xff\x07\x4d\xa7\x53\xd9\xc9\x48\xa0\x1d\x1d\x4c\x31\x09\x73\xc0\x7a\xfa\xf6\xc5\x5d\xd4\x93\x5b\x5d\xd8\x0b\x83\x39\xfd\x9d\x5b\xf8\xc2\xfb\xe5\x00\x3e\xf5\xae\xb1\xe7\x19\x8a\xb1\xcd\x86\x4a\xf1\xd7\x39\x9e\xf1\xf4\x5d\xce\x08\x70\x8a\x77\x41\xce\x94\x2c\x46\xa0\x27\x93\xc3\xd1\x09\xe1\x7a\xe2\x6e\x67\x90\x04\x82\xd9\x96\x29\xa8\x87\x69\xc4\xc5\xed\xcb\x33\x87\xb7\xe7\x16\xae\x97\xf0\x43\x3d\xbe\xdd\x99\xb8\xdc\x71\x51\x2f\x5c\x98\xd7\xd1\xa8\x26\x1f\xbb\xc3\xb1\x67\x30\x91\x7e\x43\xa5\x22\xd3\xb9\x62\x45\xe0\x6e\xae\xdf\x5e\x14\x2e\x8c\xba\x67\x5d\x20\x4b\x3e\x6e\x69\x78\xa8\x00\xb7\x92\xfe\xce\x31\xfe\x3b\x06\xb6\x85\xf7\xbf\x18\xdb\x16\xf8\x7f\x4b\x78\x1f\x45\xf7\x61\x86\x38\x7c\x2d\xed\x3f\x46\xf5\x5f\x4c\x27\xbe\x34\x90\xe1\x9a\xc6\x77\xbd\x3c\xdb\xbb\x4f\x9e\x40\x7d\x6e\xe7\x75\xee\x83\x48\xdb\x4e\x5c\x06\xdb\x6f\x15\xb6\x5f\x11\xac\xe8\x77\xfb\x2f\x5f\x53\xa4\x0e\x0b\x19\xc9\xde\x80\xca\x0c\x4a\xa9\x35\x5f\xe7\xdd\xb5\x65\x77\x65\x2a\xb3\xd1\x7e\x6f\xb8\x09\xa6\x61\x04\x97\x5f\x0e\x6d\xbb\x29\x4a\xd2\x7e\xc1\xae\x31\xec\xde\x2f\x21\xc7\xe9\x0f\x2d\x11\xcd\xfb\xb2\xdc\x87\xf6\xea\x7d\x92\xa2\xb7\x80\x29\xca\x83\x05\xec\xc7\xe9\x09\x95\xbc\x67\xa5\x55\x08\x14\xac\x1c\xea\xd3\xf5\xa6\xfe\xcb\xd6\xa8\x3b\xf5\x86\xba\xcf\xbc\xd9\x65\x86\xc1\x9c\xc2\x33\x7a\x38\xf1\x4d\xec\x3d\x2b\x2f\xeb\x1b\x5f\xbf\xb4\x51\xc3\x90\xcb\x0a\x13\x5f\x94\x8a\x0b\x93\x85\xa3\x71\x27\x7c\x96\x46\xf3\x25\xd4\x51\x30\x0d\xd7\xa5\x54\x0b\x98\xc6\x8b\x01\xe4\xb8\xfb\xa8\x87\x47\x3e\xfa\xaf\x00\x00\x00\xff\xff\x03\x2f\xac\x8d\xa2\x20\x00\x00") func enumTmplBytes() ([]byte, error) { return bindataRead( @@ -85,7 +85,7 @@ func enumTmpl() (*asset, error) { } info := bindataFileInfo{name: "enum.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x93, 0xaa, 0xca, 0xe1, 0xd6, 0x4c, 0x4e, 0x87, 0x6b, 0x96, 0x6, 0xa, 0x6b, 0xcb, 0x25, 0xc1, 0xff, 0xb2, 0x79, 0xe3, 0x66, 0x2f, 0xd, 0x43, 0x6b, 0x41, 0xea, 0x4d, 0xb1, 0x67, 0x76, 0xbe}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7a, 0x85, 0x1, 0x7f, 0x8a, 0xb9, 0x0, 0xfb, 0x6, 0xce, 0xa8, 0xb4, 0xc9, 0xc5, 0xcb, 0x69, 0xad, 0x6d, 0xbd, 0x9c, 0xe4, 0x51, 0xf6, 0x29, 0x5e, 0xa6, 0x99, 0x7c, 0x4e, 0x68, 0xc4, 0x46}} return a, nil } diff --git a/generator/enum.tmpl b/generator/enum.tmpl index c4ae7b79..75c096d5 100644 --- a/generator/enum.tmpl +++ b/generator/enum.tmpl @@ -1,5 +1,9 @@ {{- define "header"}} // Code generated by go-enum DO NOT EDIT. +// Version: {{ .version }} +// Revision: {{ .revision }} +// Build Date: {{ .buildDate }} +// Built By: {{ .builtBy }} package {{.package}} diff --git a/generator/generator.go b/generator/generator.go index 8c1049ba..1ccb4f61 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -25,6 +25,10 @@ const ( // Generator is responsible for generating validation files for the given in a go source file. type Generator struct { + Version string + Revision string + BuildDate string + BuiltBy string t *template.Template knownTemplates map[string]*template.Template userTemplateNames []string @@ -64,6 +68,10 @@ type EnumValue struct { // templates loaded. func NewGenerator() *Generator { g := &Generator{ + Version: "-", + Revision: "-", + BuildDate: "-", + BuiltBy: "-", knownTemplates: make(map[string]*template.Template), userTemplateNames: make([]string, 0), t: template.New("generator"), @@ -193,7 +201,13 @@ func (g *Generator) Generate(f *ast.File) ([]byte, error) { pkg := f.Name.Name vBuff := bytes.NewBuffer([]byte{}) - err := g.t.ExecuteTemplate(vBuff, "header", map[string]interface{}{"package": pkg}) + err := g.t.ExecuteTemplate(vBuff, "header", map[string]interface{}{ + "package": pkg, + "version": g.Version, + "revision": g.Revision, + "buildDate": g.BuildDate, + "builtBy": g.BuiltBy, + }) if err != nil { return nil, errors.WithMessage(err, "Failed writing header") } diff --git a/go.mod b/go.mod index bad3c485..a7c02a0b 100644 --- a/go.mod +++ b/go.mod @@ -3,27 +3,29 @@ module github.com/abice/go-enum go 1.16 require ( - github.com/Masterminds/goutils v1.1.0 // indirect + github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/sprig v2.22.0+incompatible github.com/bradleyjkemp/cupaloy v2.2.0+incompatible + github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/golang/mock v1.6.0 - github.com/google/uuid v1.1.2 // indirect + github.com/google/uuid v1.2.0 // indirect github.com/huandu/xstrings v1.3.2 // indirect - github.com/imdario/mergo v0.3.11 // indirect + github.com/imdario/mergo v0.3.12 // indirect github.com/kevinburke/go-bindata v3.22.0+incompatible - github.com/kr/pretty v0.2.1 // indirect + github.com/kr/text v0.2.0 // indirect github.com/labstack/gommon v0.3.0 github.com/mattn/go-colorable v0.1.8 // indirect github.com/mattn/goveralls v0.0.9 - github.com/mitchellh/copystructure v1.0.0 // indirect - github.com/mitchellh/reflectwalk v1.0.1 // indirect + github.com/mitchellh/copystructure v1.1.2 // indirect github.com/pkg/errors v0.9.1 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.7.0 github.com/urfave/cli/v2 v2.3.0 - golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9 // indirect + golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf // indirect golang.org/x/tools v0.1.5 - gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) diff --git a/go.sum b/go.sum index fd5f3550..7777e3e1 100644 --- a/go.sum +++ b/go.sum @@ -1,32 +1,35 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg= -github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= +github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60= github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/bradleyjkemp/cupaloy v2.2.0+incompatible h1:Ed7uOEn/o3DIox3PV//SmtXnNO9yPZDdP9wZ0bdcEtI= github.com/bradleyjkemp/cupaloy v2.2.0+incompatible/go.mod h1:Au1Xw1sgaJ5iSFktEhYsS0dbQiS1B0/XMXl+42y9Ilk= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/imdario/mergo v0.3.11 h1:3tnifQM4i+fbajXKBHXWEH+KvNHqojZ778UH75j3bGA= -github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/kevinburke/go-bindata v3.22.0+incompatible h1:/JmqEhIWQ7GRScV0WjX/0tqBrC5D21ALg0H0U/KZ/ts= github.com/kevinburke/go-bindata v3.22.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/labstack/gommon v0.3.0 h1:JEeO0bvc78PKdyHxloTKiF8BD5iGrH8T6MSeGvSgob0= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= @@ -38,9 +41,8 @@ github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHX github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/goveralls v0.0.9 h1:XmIwwrO9a9pqSW6IpI89BSCShzQxx0j/oKnnvELQNME= github.com/mattn/goveralls v0.0.9/go.mod h1:FRbM1PS8oVsOe9JtdzAAXM+DsvDMMHcM1C7drGJD8HY= -github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= -github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= -github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/copystructure v1.1.2 h1:Th2TIvG1+6ma3e/0/bopBKohOTY7s4dA8V2q4EUcBJ0= +github.com/mitchellh/copystructure v1.1.2/go.mod h1:EBArHfARyrSWO/+Wyr9zwEkc6XMFB9XyNgFNmRkZZU4= github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -64,12 +66,13 @@ github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPU github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9 h1:umElSU9WZirRdgu2yFHY0ayQkEnKiOC1TtM3fWXFnoU= -golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf h1:B2n+Zi5QeYRDAEodEu72OS36gmTWjgpXr2+cWcBW90o= +golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -96,11 +99,13 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/main.go b/main.go index 49102271..65ad2a3f 100644 --- a/main.go +++ b/main.go @@ -13,6 +13,13 @@ import ( "github.com/urfave/cli/v2" ) +var ( + version string + commit string + date string + builtBy string +) + type rootT struct { FileNames cli.StringSlice NoPrefix bool @@ -121,6 +128,10 @@ func main() { for _, fileOption := range argv.FileNames.Value() { g := generator.NewGenerator() + g.Version = version + g.Revision = commit + g.BuildDate = date + g.BuiltBy = builtBy if argv.NoPrefix { g.WithNoPrefix() From 13348bc0cb404ae3539bb2cd6d02e75d5fd75636 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Mon, 6 Sep 2021 06:59:42 -0700 Subject: [PATCH 12/91] release: updated --- .goreleaser.yml | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index 14c2e760..90024d07 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -1,4 +1,3 @@ -# This is an example .goreleaser.yml file with some sane defaults. # Make sure to check the documentation at http://goreleaser.com before: hooks: @@ -15,16 +14,11 @@ builds: - darwin archives: - - replacements: - darwin: Darwin - linux: Linux - windows: Windows - 386: i386 - amd64: x86_64 -checksum: - name_template: "checksums.txt" + - format_overrides: + - goos: windows + format: zip snapshot: - name_template: "{{ incpatch .Version }}-next" + name_template: "{{ incpatch .Version }}-dev" changelog: sort: asc filters: From acf2ee08e915bb5cceaff9e742421e4c8eae7dbd Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Mon, 6 Sep 2021 10:50:54 -0700 Subject: [PATCH 13/91] change to binaries and uname values --- .goreleaser.yml | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index 90024d07..62084815 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -1,4 +1,3 @@ -# Make sure to check the documentation at http://goreleaser.com before: hooks: # You may remove this if you don't use go modules. @@ -13,12 +12,22 @@ builds: - windows - darwin +checksum: + name_template: "{{ .ProjectName }}_checksums.txt" + archives: - - format_overrides: - - goos: windows - format: zip + # Distribute just the binaries by default + - format: binary + replacements: + darwin: Darwin + linux: Linux + windows: Windows + 386: i386 + amd64: x86_64 + name_template: "{{ .Binary }}_{{ .Os }}_{{ .Arch }}" + snapshot: - name_template: "{{ incpatch .Version }}-dev" + name_template: "{{ incpatch .Version }}-next" changelog: sort: asc filters: From b4be01eb214e538672f5b1620b03177e62a5fecc Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Mon, 6 Sep 2021 12:53:31 -0700 Subject: [PATCH 14/91] Add character aliases as CLI options (#65) --- README.md | 35 ++++++++++++++--------- example/animal.go | 4 ++- example/animal_enum.go | 16 ++++++++--- generator/generator.go | 30 ++++++++++++++++++++ generator/generator_test.go | 56 +++++++++++++++++++++++++++++++++++++ main.go | 11 ++++++++ 6 files changed, 134 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 68105bf0..76611b98 100644 --- a/README.md +++ b/README.md @@ -19,12 +19,16 @@ I took the output of the [Stringer](https://godoc.org/golang.org/x/tools/cmd/str ``` shell go-enum --help + NAME: go-enum - An enum generator for go USAGE: go-enum [global options] [arguments...] +VERSION: + x.y.z + GLOBAL OPTIONS: --file value, -f value The file(s) to generate enums. Use more than one flag for more files. --noprefix Prevents the constants generated from having the Enum as a prefix. (default: false) @@ -40,7 +44,9 @@ GLOBAL OPTIONS: --sqlnullint Adds a Null{{ENUM}} type for marshalling a nullable int value to sql (default: false) --sqlnullstr Adds a Null{{ENUM}} type for marshalling a nullable string value to sql. If sqlnullint is specified too, it will be Null{{ENUM}}Str (default: false) --template value, -t value Additional template file(s) to generate enums. Use more than one flag for more files. Templates will be executed in alphabetical order. + --alias value, -a value Adds or replaces aliases for a non alphanumeric value that needs to be accounted for. [Format should be "key:value,key2:value2", or specify multiple entries, or both!] --help, -h show help (default: false) + --version, -v print the version (default: false) ``` ### Syntax @@ -108,8 +114,11 @@ type Color int32 The generated code will look something like: ``` go -// Code generated by go-enum -// DO NOT EDIT! +// Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example package example @@ -119,28 +128,28 @@ import ( ) const ( - // ColorBlack is a Color of type Black + // ColorBlack is a Color of type Black. ColorBlack Color = iota - // ColorWhite is a Color of type White + // ColorWhite is a Color of type White. ColorWhite - // ColorRed is a Color of type Red + // ColorRed is a Color of type Red. ColorRed - // ColorGreen is a Color of type Green + // ColorGreen is a Color of type Green. // Green starts with 33 ColorGreen Color = iota + 30 - // ColorBlue is a Color of type Blue + // ColorBlue is a Color of type Blue. ColorBlue - // ColorGrey is a Color of type Grey + // ColorGrey is a Color of type Grey. ColorGrey - // ColorYellow is a Color of type Yellow + // ColorYellow is a Color of type Yellow. ColorYellow - // ColorBlueGreen is a Color of type Blue-Green + // ColorBlueGreen is a Color of type Blue-Green. ColorBlueGreen - // ColorRedOrange is a Color of type Red-Orange + // ColorRedOrange is a Color of type Red-Orange. ColorRedOrange - // ColorYellowGreen is a Color of type Yellow_green + // ColorYellowGreen is a Color of type Yellow_green. ColorYellowGreen - // ColorRedOrangeBlue is a Color of type Red-Orange-Blue + // ColorRedOrangeBlue is a Color of type Red-Orange-Blue. ColorRedOrangeBlue ) diff --git a/example/animal.go b/example/animal.go index 0ffefa2f..84799d41 100644 --- a/example/animal.go +++ b/example/animal.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE +//go:generate ../bin/go-enum -f=$GOFILE -a "+:Plus,#:Sharp" package example @@ -6,5 +6,7 @@ package example // Cat, // Dog, // Fish +// Fish++ +// Fish# // ) type Animal int32 diff --git a/example/animal_enum.go b/example/animal_enum.go index 6370e4fe..8eade5ad 100644 --- a/example/animal_enum.go +++ b/example/animal_enum.go @@ -17,14 +17,20 @@ const ( AnimalDog // AnimalFish is a Animal of type Fish. AnimalFish + // AnimalFishPlusPlus is a Animal of type Fish++. + AnimalFishPlusPlus + // AnimalFishSharp is a Animal of type Fish#. + AnimalFishSharp ) -const _AnimalName = "CatDogFish" +const _AnimalName = "CatDogFishFish++Fish#" var _AnimalMap = map[Animal]string{ 0: _AnimalName[0:3], 1: _AnimalName[3:6], 2: _AnimalName[6:10], + 3: _AnimalName[10:16], + 4: _AnimalName[16:21], } // String implements the Stringer interface. @@ -36,9 +42,11 @@ func (x Animal) String() string { } var _AnimalValue = map[string]Animal{ - _AnimalName[0:3]: 0, - _AnimalName[3:6]: 1, - _AnimalName[6:10]: 2, + _AnimalName[0:3]: 0, + _AnimalName[3:6]: 1, + _AnimalName[6:10]: 2, + _AnimalName[10:16]: 3, + _AnimalName[16:21]: 4, } // ParseAnimal attempts to convert a string to a Animal diff --git a/generator/generator.go b/generator/generator.go index 1ccb4f61..2887d0ae 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -23,6 +23,10 @@ const ( parseCommentPrefix = `//` ) +var ( + replacementNames = map[string]string{} +) + // Generator is responsible for generating validation files for the given in a go source file. type Generator struct { Version string @@ -168,6 +172,28 @@ func (g *Generator) WithSQLNullStr() *Generator { return g } +// ParseAliases is used to add aliases to replace during name sanitization. +func ParseAliases(aliases []string) error { + aliasMap := map[string]string{} + + for _, str := range aliases { + kvps := strings.Split(str, ",") + for _, kvp := range kvps { + parts := strings.Split(kvp, ":") + if len(parts) != 2 { + return fmt.Errorf("invalid formatted alias entry %q, must be in the format \"key:value\"", kvp) + } + aliasMap[parts[0]] = parts[1] + } + } + + for k, v := range aliasMap { + replacementNames[k] = v + } + + return nil +} + // WithTemplates is used to provide the filenames of additional templates. func (g *Generator) WithTemplates(filenames ...string) *Generator { for _, ut := range template.Must(g.t.ParseFiles(filenames...)).Templates() { @@ -371,6 +397,10 @@ func sanitizeValue(value string) string { name := value + for k, v := range replacementNames { + name = strings.ReplaceAll(name, k, v) + } + // If the start character is not a unicode letter (this check includes the case of '_') // then we need to add an exported prefix, so tack on a 'X' at the beginning if !(unicode.IsLetter(rune(name[0]))) { diff --git a/generator/generator_test.go b/generator/generator_test.go index 0632ee49..0e90dba4 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -131,3 +131,59 @@ func TestCustomPrefixExampleFile(t *testing.T) { fmt.Println(string(imported)) } } + +func TestAliasParsing(t *testing.T) { + tests := map[string]struct { + input []string + resultingMap map[string]string + err error + }{ + "no aliases": { + resultingMap: map[string]string{}, + }, + "multiple arrays": { + input: []string{ + `!:Bang,a:a`, + `@:AT`, + `&:AND,|:OR`, + }, + resultingMap: map[string]string{ + "a": "a", + "!": "Bang", + "@": "AT", + "&": "AND", + "|": "OR", + }, + }, + "more types": { + input: []string{ + `*:star,+:PLUS`, + `-:less`, + `#:HASH,!:Bang`, + }, + resultingMap: map[string]string{ + "*": "star", + "+": "PLUS", + "-": "less", + "#": "HASH", + "!": "Bang", + }, + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + defer func() { + replacementNames = map[string]string{} + }() + err := ParseAliases(tc.input) + if tc.err != nil { + require.Error(t, err) + require.EqualError(t, err, tc.err.Error()) + } else { + require.NoError(t, err) + require.Equal(t, tc.resultingMap, replacementNames) + } + }) + } +} diff --git a/main.go b/main.go index 65ad2a3f..5507186f 100644 --- a/main.go +++ b/main.go @@ -35,6 +35,7 @@ type rootT struct { SQLNullInt bool Ptr bool TemplateFileNames cli.StringSlice + Aliases cli.StringSlice } func main() { @@ -49,6 +50,7 @@ func main() { Name: "go-enum", Usage: "An enum generator for go", HideHelpCommand: true, + Version: version, Flags: []cli.Flag{ &cli.StringSliceFlag{ Name: "file", @@ -123,8 +125,17 @@ func main() { Usage: "Additional template file(s) to generate enums. Use more than one flag for more files. Templates will be executed in alphabetical order.", Destination: &argv.TemplateFileNames, }, + &cli.StringSliceFlag{ + Name: "alias", + Aliases: []string{"a"}, + Usage: "Adds or replaces aliases for a non alphanumeric value that needs to be accounted for. [Format should be \"key:value,key2:value2\", or specify multiple entries, or both!]", + Destination: &argv.Aliases, + }, }, Action: func(ctx *cli.Context) error { + if err := generator.ParseAliases(argv.Aliases.Value()); err != nil { + return err + } for _, fileOption := range argv.FileNames.Value() { g := generator.NewGenerator() From 7c8ff9723b48147b31f4492edff6db21a442a115 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Sep 2021 19:24:39 -0700 Subject: [PATCH 15/91] Bump golang.org/x/tools from 0.1.5 to 0.1.6 (#66) Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.1.5 to 0.1.6. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.1.5...v0.1.6) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index a7c02a0b..d28912ad 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/stretchr/testify v1.7.0 github.com/urfave/cli/v2 v2.3.0 golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf // indirect - golang.org/x/tools v0.1.5 + golang.org/x/tools v0.1.6 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect diff --git a/go.sum b/go.sum index 7777e3e1..9c90aaac 100644 --- a/go.sum +++ b/go.sum @@ -64,6 +64,7 @@ github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/X github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf h1:B2n+Zi5QeYRDAEodEu72OS36gmTWjgpXr2+cWcBW90o= @@ -74,6 +75,7 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -84,16 +86,19 @@ golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e h1:WUoyKPm6nCo1BnNUvPGnFG3T5DUVem42yDJZZ4CNxMA= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.6 h1:SIasE1FVIQOWz2GEAHFOmoW7xchJcqlucjSULTL0Ag4= +golang.org/x/tools v0.1.6/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= From 47b5365ea4e71927919fdcf41c66a088cc653c48 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Sep 2021 05:47:00 -0700 Subject: [PATCH 16/91] Bump github.com/mattn/goveralls from 0.0.9 to 0.0.11 (#68) Bumps [github.com/mattn/goveralls](https://github.com/mattn/goveralls) from 0.0.9 to 0.0.11. - [Release notes](https://github.com/mattn/goveralls/releases) - [Commits](https://github.com/mattn/goveralls/compare/v0.0.9...v0.0.11) --- updated-dependencies: - dependency-name: github.com/mattn/goveralls dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d28912ad..9ba19ccb 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/labstack/gommon v0.3.0 github.com/mattn/go-colorable v0.1.8 // indirect - github.com/mattn/goveralls v0.0.9 + github.com/mattn/goveralls v0.0.11 github.com/mitchellh/copystructure v1.1.2 // indirect github.com/pkg/errors v0.9.1 github.com/spf13/pflag v1.0.5 diff --git a/go.sum b/go.sum index 9c90aaac..9794aac4 100644 --- a/go.sum +++ b/go.sum @@ -39,8 +39,8 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/goveralls v0.0.9 h1:XmIwwrO9a9pqSW6IpI89BSCShzQxx0j/oKnnvELQNME= -github.com/mattn/goveralls v0.0.9/go.mod h1:FRbM1PS8oVsOe9JtdzAAXM+DsvDMMHcM1C7drGJD8HY= +github.com/mattn/goveralls v0.0.11 h1:eJXea6R6IFlL1QMKNMzDvvHv/hwGrnvyig4N+0+XiMM= +github.com/mattn/goveralls v0.0.11/go.mod h1:gU8SyhNswsJKchEV93xRQxX6X3Ei4PJdQk/6ZHvrvRk= github.com/mitchellh/copystructure v1.1.2 h1:Th2TIvG1+6ma3e/0/bopBKohOTY7s4dA8V2q4EUcBJ0= github.com/mitchellh/copystructure v1.1.2/go.mod h1:EBArHfARyrSWO/+Wyr9zwEkc6XMFB9XyNgFNmRkZZU4= github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= From 6e988a2d0ac87c0fb4971d020a904527bb4960ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Sep 2021 19:32:12 -0700 Subject: [PATCH 17/91] Bump golang.org/x/tools from 0.1.6 to 0.1.7 (#69) Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.1.6 to 0.1.7. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.1.6...v0.1.7) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 9ba19ccb..a160da3a 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/stretchr/testify v1.7.0 github.com/urfave/cli/v2 v2.3.0 golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf // indirect - golang.org/x/tools v0.1.6 + golang.org/x/tools v0.1.7 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect diff --git a/go.sum b/go.sum index 9794aac4..f6f6f850 100644 --- a/go.sum +++ b/go.sum @@ -97,8 +97,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.6 h1:SIasE1FVIQOWz2GEAHFOmoW7xchJcqlucjSULTL0Ag4= -golang.org/x/tools v0.1.6/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= +golang.org/x/tools v0.1.7 h1:6j8CgantCy3yc8JGBqkDLMKWqZ0RDU2g1HVgacojGWQ= +golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= From 5a95b1bbcaf1f8f32542725929d84acdf48e0259 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Fri, 5 Nov 2021 09:51:32 -0700 Subject: [PATCH 18/91] swap to using constants instead of int values. (#71) --- README.md | 199 ++++++---- example/animal_enum.go | 20 +- example/color_enum.go | 66 ++-- example/commented_enum.go | 36 +- example/custom_prefix_enum.go | 12 +- example/example_enum.go | 102 ++--- example/globs/letter_enum.go | 104 ++--- example/globs/number_enum.go | 40 +- example/sql_enum.go | 16 +- example/sql_int_enum.go | 20 +- example/sql_str_enum.go | 16 +- example/user_template_enum.go | 12 +- .../generator-TestCustomPrefixExampleFile | 366 +++++++++--------- .../.snapshots/generator-TestExampleFile | 366 +++++++++--------- .../generator-TestNoPrefixExampleFile | 366 +++++++++--------- ...or-TestNoPrefixExampleFileWithSnakeToCamel | 366 +++++++++--------- generator/embedded.go | 1 + generator/embedded_1.16.go | 1 + generator/enum.tmpl | 24 +- generator/template_funcs.go | 6 +- tools.go | 1 + 21 files changed, 1089 insertions(+), 1051 deletions(-) diff --git a/README.md b/README.md index 76611b98..8e3b3b9b 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,45 @@ It's not perfect, but I think it's useful. I took the output of the [Stringer](https://godoc.org/golang.org/x/tools/cmd/stringer) command as the `String()` method, and added a way to parse a string value. +## Installation + +You can now download a release directly from github and use that for generating your enums! (Thanks to [GoReleaser](https://github.com/goreleaser/goreleaser-action)) + +I did not specify any overrides on the release binary names, so `uname -s` and `uname -m` should provide the correct version of the binary for your distro. + +```shell + curl -fsSL "https://github.com/abice/go-enum/releases/download/$(GO_ENUM_VERSION)/go-enum_$(uname -s)_$(uname -m)" -o go-enum +``` + +## Adding it to your project + +### Using go generate + +1. Add a go:generate line to your file like so... `//go:generate go-enum -f=$GOFILE --marshal` +1. Run go generate like so `go generate ./...` +1. Enjoy your newly created Enumeration! + +### Using Makefile + +If you prefer makefile stuff, you can always do something like this: + +```Makefile +STANDARD_ENUMS = example/animal_enum.go \ + example/color_enum.go + +NULLABLE_ENUMS = example/sql_enum.go + +$(STANDARD_ENUMS): GO_ENUM_FLAGS=--nocase --marshal --names --ptr +$(NULLABLE_ENUMS): GO_ENUM_FLAGS=--nocase --marshal --names --sqlnullint --ptr + +enums: $(STANDARD_ENUMS) $(NULLABLE_ENUMS) + +# The generator statement for go enum files. Files that invalidate the +# enum file: source file, the binary itself, and this file (in case you want to generate with different flags) +%_enum.go: %.go $(GOENUM) Makefile + $(GOENUM) -f $*.go $(GO_ENUM_FLAGS) +``` + ## Command options ``` shell @@ -123,114 +162,110 @@ The generated code will look something like: package example import ( - "fmt" - "strings" + "fmt" + "strings" ) const ( - // ColorBlack is a Color of type Black. - ColorBlack Color = iota - // ColorWhite is a Color of type White. - ColorWhite - // ColorRed is a Color of type Red. - ColorRed - // ColorGreen is a Color of type Green. - // Green starts with 33 - ColorGreen Color = iota + 30 - // ColorBlue is a Color of type Blue. - ColorBlue - // ColorGrey is a Color of type Grey. - ColorGrey - // ColorYellow is a Color of type Yellow. - ColorYellow - // ColorBlueGreen is a Color of type Blue-Green. - ColorBlueGreen - // ColorRedOrange is a Color of type Red-Orange. - ColorRedOrange - // ColorYellowGreen is a Color of type Yellow_green. - ColorYellowGreen - // ColorRedOrangeBlue is a Color of type Red-Orange-Blue. - ColorRedOrangeBlue + // ColorBlack is a Color of type Black. + ColorBlack Color = iota + // ColorWhite is a Color of type White. + ColorWhite + // ColorRed is a Color of type Red. + ColorRed + // ColorGreen is a Color of type Green. + // Green starts with 33 + ColorGreen Color = iota + 30 + // ColorBlue is a Color of type Blue. + ColorBlue + // ColorGrey is a Color of type Grey. + ColorGrey + // ColorYellow is a Color of type Yellow. + ColorYellow + // ColorBlueGreen is a Color of type Blue-Green. + ColorBlueGreen + // ColorRedOrange is a Color of type Red-Orange. + ColorRedOrange + // ColorYellowGreen is a Color of type Yellow_green. + ColorYellowGreen + // ColorRedOrangeBlue is a Color of type Red-Orange-Blue. + ColorRedOrangeBlue ) const _ColorName = "BlackWhiteRedGreenBluegreyyellowblue-greenred-orangeyellow_greenred-orange-blue" var _ColorMap = map[Color]string{ - 0: _ColorName[0:5], - 1: _ColorName[5:10], - 2: _ColorName[10:13], - 33: _ColorName[13:18], - 34: _ColorName[18:22], - 35: _ColorName[22:26], - 36: _ColorName[26:32], - 37: _ColorName[32:42], - 38: _ColorName[42:52], - 39: _ColorName[52:64], - 40: _ColorName[64:79], + ColorBlack: _ColorName[0:5], + ColorWhite: _ColorName[5:10], + ColorRed: _ColorName[10:13], + ColorGreen: _ColorName[13:18], + ColorBlue: _ColorName[18:22], + ColorGrey: _ColorName[22:26], + ColorYellow: _ColorName[26:32], + ColorBlueGreen: _ColorName[32:42], + ColorRedOrange: _ColorName[42:52], + ColorYellowGreen: _ColorName[52:64], + ColorRedOrangeBlue: _ColorName[64:79], } // String implements the Stringer interface. func (x Color) String() string { - if str, ok := _ColorMap[x]; ok { - return str - } - return fmt.Sprintf("Color(%d)", x) + if str, ok := _ColorMap[x]; ok { + return str + } + return fmt.Sprintf("Color(%d)", x) } var _ColorValue = map[string]Color{ - _ColorName[0:5]: 0, - strings.ToLower(_ColorName[0:5]): 0, - _ColorName[5:10]: 1, - strings.ToLower(_ColorName[5:10]): 1, - _ColorName[10:13]: 2, - strings.ToLower(_ColorName[10:13]): 2, - _ColorName[13:18]: 33, - strings.ToLower(_ColorName[13:18]): 33, - _ColorName[18:22]: 34, - strings.ToLower(_ColorName[18:22]): 34, - _ColorName[22:26]: 35, - strings.ToLower(_ColorName[22:26]): 35, - _ColorName[26:32]: 36, - strings.ToLower(_ColorName[26:32]): 36, - _ColorName[32:42]: 37, - strings.ToLower(_ColorName[32:42]): 37, - _ColorName[42:52]: 38, - strings.ToLower(_ColorName[42:52]): 38, - _ColorName[52:64]: 39, - strings.ToLower(_ColorName[52:64]): 39, - _ColorName[64:79]: 40, - strings.ToLower(_ColorName[64:79]): 40, + _ColorName[0:5]: ColorBlack, + strings.ToLower(_ColorName[0:5]): ColorBlack, + _ColorName[5:10]: ColorWhite, + strings.ToLower(_ColorName[5:10]): ColorWhite, + _ColorName[10:13]: ColorRed, + strings.ToLower(_ColorName[10:13]): ColorRed, + _ColorName[13:18]: ColorGreen, + strings.ToLower(_ColorName[13:18]): ColorGreen, + _ColorName[18:22]: ColorBlue, + strings.ToLower(_ColorName[18:22]): ColorBlue, + _ColorName[22:26]: ColorGrey, + strings.ToLower(_ColorName[22:26]): ColorGrey, + _ColorName[26:32]: ColorYellow, + strings.ToLower(_ColorName[26:32]): ColorYellow, + _ColorName[32:42]: ColorBlueGreen, + strings.ToLower(_ColorName[32:42]): ColorBlueGreen, + _ColorName[42:52]: ColorRedOrange, + strings.ToLower(_ColorName[42:52]): ColorRedOrange, + _ColorName[52:64]: ColorYellowGreen, + strings.ToLower(_ColorName[52:64]): ColorYellowGreen, + _ColorName[64:79]: ColorRedOrangeBlue, + strings.ToLower(_ColorName[64:79]): ColorRedOrangeBlue, } // ParseColor attempts to convert a string to a Color func ParseColor(name string) (Color, error) { - if x, ok := _ColorValue[name]; ok { - return x, nil - } - return Color(0), fmt.Errorf("%s is not a valid Color", name) + if x, ok := _ColorValue[name]; ok { + return x, nil + } + return Color(0), fmt.Errorf("%s is not a valid Color", name) +} + +func (x Color) Ptr() *Color { + return &x } // MarshalText implements the text marshaller method func (x Color) MarshalText() ([]byte, error) { - return []byte(x.String()), nil + return []byte(x.String()), nil } // UnmarshalText implements the text unmarshaller method func (x *Color) UnmarshalText(text []byte) error { - name := string(text) - tmp, err := ParseColor(name) - if err != nil { - return err - } - *x = tmp - return nil + name := string(text) + tmp, err := ParseColor(name) + if err != nil { + return err + } + *x = tmp + return nil } - ``` - -## Adding it to your project - -1. `go get github.com/abice/go-enum` -1. Add a go:generate line to your file like so... `//go:generate go-enum -f=$GOFILE --marshal` -1. Run go generate like so `go generate ./...` -1. Enjoy your newly created Enumeration diff --git a/example/animal_enum.go b/example/animal_enum.go index 8eade5ad..f6c15a95 100644 --- a/example/animal_enum.go +++ b/example/animal_enum.go @@ -26,11 +26,11 @@ const ( const _AnimalName = "CatDogFishFish++Fish#" var _AnimalMap = map[Animal]string{ - 0: _AnimalName[0:3], - 1: _AnimalName[3:6], - 2: _AnimalName[6:10], - 3: _AnimalName[10:16], - 4: _AnimalName[16:21], + AnimalCat: _AnimalName[0:3], + AnimalDog: _AnimalName[3:6], + AnimalFish: _AnimalName[6:10], + AnimalFishPlusPlus: _AnimalName[10:16], + AnimalFishSharp: _AnimalName[16:21], } // String implements the Stringer interface. @@ -42,11 +42,11 @@ func (x Animal) String() string { } var _AnimalValue = map[string]Animal{ - _AnimalName[0:3]: 0, - _AnimalName[3:6]: 1, - _AnimalName[6:10]: 2, - _AnimalName[10:16]: 3, - _AnimalName[16:21]: 4, + _AnimalName[0:3]: AnimalCat, + _AnimalName[3:6]: AnimalDog, + _AnimalName[6:10]: AnimalFish, + _AnimalName[10:16]: AnimalFishPlusPlus, + _AnimalName[16:21]: AnimalFishSharp, } // ParseAnimal attempts to convert a string to a Animal diff --git a/example/color_enum.go b/example/color_enum.go index c982bde2..96321e57 100644 --- a/example/color_enum.go +++ b/example/color_enum.go @@ -40,17 +40,17 @@ const ( const _ColorName = "BlackWhiteRedGreenBluegreyyellowblue-greenred-orangeyellow_greenred-orange-blue" var _ColorMap = map[Color]string{ - 0: _ColorName[0:5], - 1: _ColorName[5:10], - 2: _ColorName[10:13], - 33: _ColorName[13:18], - 34: _ColorName[18:22], - 35: _ColorName[22:26], - 36: _ColorName[26:32], - 37: _ColorName[32:42], - 38: _ColorName[42:52], - 39: _ColorName[52:64], - 40: _ColorName[64:79], + ColorBlack: _ColorName[0:5], + ColorWhite: _ColorName[5:10], + ColorRed: _ColorName[10:13], + ColorGreen: _ColorName[13:18], + ColorBlue: _ColorName[18:22], + ColorGrey: _ColorName[22:26], + ColorYellow: _ColorName[26:32], + ColorBlueGreen: _ColorName[32:42], + ColorRedOrange: _ColorName[42:52], + ColorYellowGreen: _ColorName[52:64], + ColorRedOrangeBlue: _ColorName[64:79], } // String implements the Stringer interface. @@ -62,28 +62,28 @@ func (x Color) String() string { } var _ColorValue = map[string]Color{ - _ColorName[0:5]: 0, - strings.ToLower(_ColorName[0:5]): 0, - _ColorName[5:10]: 1, - strings.ToLower(_ColorName[5:10]): 1, - _ColorName[10:13]: 2, - strings.ToLower(_ColorName[10:13]): 2, - _ColorName[13:18]: 33, - strings.ToLower(_ColorName[13:18]): 33, - _ColorName[18:22]: 34, - strings.ToLower(_ColorName[18:22]): 34, - _ColorName[22:26]: 35, - strings.ToLower(_ColorName[22:26]): 35, - _ColorName[26:32]: 36, - strings.ToLower(_ColorName[26:32]): 36, - _ColorName[32:42]: 37, - strings.ToLower(_ColorName[32:42]): 37, - _ColorName[42:52]: 38, - strings.ToLower(_ColorName[42:52]): 38, - _ColorName[52:64]: 39, - strings.ToLower(_ColorName[52:64]): 39, - _ColorName[64:79]: 40, - strings.ToLower(_ColorName[64:79]): 40, + _ColorName[0:5]: ColorBlack, + strings.ToLower(_ColorName[0:5]): ColorBlack, + _ColorName[5:10]: ColorWhite, + strings.ToLower(_ColorName[5:10]): ColorWhite, + _ColorName[10:13]: ColorRed, + strings.ToLower(_ColorName[10:13]): ColorRed, + _ColorName[13:18]: ColorGreen, + strings.ToLower(_ColorName[13:18]): ColorGreen, + _ColorName[18:22]: ColorBlue, + strings.ToLower(_ColorName[18:22]): ColorBlue, + _ColorName[22:26]: ColorGrey, + strings.ToLower(_ColorName[22:26]): ColorGrey, + _ColorName[26:32]: ColorYellow, + strings.ToLower(_ColorName[26:32]): ColorYellow, + _ColorName[32:42]: ColorBlueGreen, + strings.ToLower(_ColorName[32:42]): ColorBlueGreen, + _ColorName[42:52]: ColorRedOrange, + strings.ToLower(_ColorName[42:52]): ColorRedOrange, + _ColorName[52:64]: ColorYellowGreen, + strings.ToLower(_ColorName[52:64]): ColorYellowGreen, + _ColorName[64:79]: ColorRedOrangeBlue, + strings.ToLower(_ColorName[64:79]): ColorRedOrangeBlue, } // ParseColor attempts to convert a string to a Color diff --git a/example/commented_enum.go b/example/commented_enum.go index db60df54..5d3e0380 100644 --- a/example/commented_enum.go +++ b/example/commented_enum.go @@ -25,9 +25,9 @@ const ( const _CommentedName = "value1value2value3" var _CommentedMap = map[Commented]string{ - 0: _CommentedName[0:6], - 1: _CommentedName[6:12], - 2: _CommentedName[12:18], + CommentedValue1: _CommentedName[0:6], + CommentedValue2: _CommentedName[6:12], + CommentedValue3: _CommentedName[12:18], } // String implements the Stringer interface. @@ -39,12 +39,12 @@ func (x Commented) String() string { } var _CommentedValue = map[string]Commented{ - _CommentedName[0:6]: 0, - strings.ToLower(_CommentedName[0:6]): 0, - _CommentedName[6:12]: 1, - strings.ToLower(_CommentedName[6:12]): 1, - _CommentedName[12:18]: 2, - strings.ToLower(_CommentedName[12:18]): 2, + _CommentedName[0:6]: CommentedValue1, + strings.ToLower(_CommentedName[0:6]): CommentedValue1, + _CommentedName[6:12]: CommentedValue2, + strings.ToLower(_CommentedName[6:12]): CommentedValue2, + _CommentedName[12:18]: CommentedValue3, + strings.ToLower(_CommentedName[12:18]): CommentedValue3, } // ParseCommented attempts to convert a string to a Commented @@ -88,9 +88,9 @@ const ( const _ComplexCommentedName = "value1value2value3" var _ComplexCommentedMap = map[ComplexCommented]string{ - 1: _ComplexCommentedName[0:6], - 2: _ComplexCommentedName[6:12], - 3: _ComplexCommentedName[12:18], + ComplexCommentedValue1: _ComplexCommentedName[0:6], + ComplexCommentedValue2: _ComplexCommentedName[6:12], + ComplexCommentedValue3: _ComplexCommentedName[12:18], } // String implements the Stringer interface. @@ -102,12 +102,12 @@ func (x ComplexCommented) String() string { } var _ComplexCommentedValue = map[string]ComplexCommented{ - _ComplexCommentedName[0:6]: 1, - strings.ToLower(_ComplexCommentedName[0:6]): 1, - _ComplexCommentedName[6:12]: 2, - strings.ToLower(_ComplexCommentedName[6:12]): 2, - _ComplexCommentedName[12:18]: 3, - strings.ToLower(_ComplexCommentedName[12:18]): 3, + _ComplexCommentedName[0:6]: ComplexCommentedValue1, + strings.ToLower(_ComplexCommentedName[0:6]): ComplexCommentedValue1, + _ComplexCommentedName[6:12]: ComplexCommentedValue2, + strings.ToLower(_ComplexCommentedName[6:12]): ComplexCommentedValue2, + _ComplexCommentedName[12:18]: ComplexCommentedValue3, + strings.ToLower(_ComplexCommentedName[12:18]): ComplexCommentedValue3, } // ParseComplexCommented attempts to convert a string to a ComplexCommented diff --git a/example/custom_prefix_enum.go b/example/custom_prefix_enum.go index dc330742..081dd843 100644 --- a/example/custom_prefix_enum.go +++ b/example/custom_prefix_enum.go @@ -22,9 +22,9 @@ const ( const _ProductName = "AnvilDynamiteGlue" var _ProductMap = map[Product]string{ - 0: _ProductName[0:5], - 1: _ProductName[5:13], - 2: _ProductName[13:17], + AcmeIncProductAnvil: _ProductName[0:5], + AcmeIncProductDynamite: _ProductName[5:13], + AcmeIncProductGlue: _ProductName[13:17], } // String implements the Stringer interface. @@ -36,9 +36,9 @@ func (x Product) String() string { } var _ProductValue = map[string]Product{ - _ProductName[0:5]: 0, - _ProductName[5:13]: 1, - _ProductName[13:17]: 2, + _ProductName[0:5]: AcmeIncProductAnvil, + _ProductName[5:13]: AcmeIncProductDynamite, + _ProductName[13:17]: AcmeIncProductGlue, } // ParseProduct attempts to convert a string to a Product diff --git a/example/example_enum.go b/example/example_enum.go index d213408f..d9ae2ea8 100644 --- a/example/example_enum.go +++ b/example/example_enum.go @@ -80,17 +80,17 @@ func MakeNames() []string { } var _MakeMap = map[Make]string{ - 0: _MakeName[0:6], - 2: _MakeName[6:11], - 4: _MakeName[11:15], - 6: _MakeName[15:20], - 8: _MakeName[20:27], - 10: _MakeName[27:33], - 12: _MakeName[33:39], - 14: _MakeName[39:43], - 16: _MakeName[43:46], - 18: _MakeName[46:59], - 20: _MakeName[59:69], + MakeToyota: _MakeName[0:6], + MakeChevy: _MakeName[6:11], + MakeFord: _MakeName[11:15], + MakeTesla: _MakeName[15:20], + MakeHyundai: _MakeName[20:27], + MakeNissan: _MakeName[27:33], + MakeJaguar: _MakeName[33:39], + MakeAudi: _MakeName[39:43], + MakeBMW: _MakeName[43:46], + MakeMercedesBenz: _MakeName[46:59], + MakeVolkswagon: _MakeName[59:69], } // String implements the Stringer interface. @@ -102,28 +102,28 @@ func (x Make) String() string { } var _MakeValue = map[string]Make{ - _MakeName[0:6]: 0, - strings.ToLower(_MakeName[0:6]): 0, - _MakeName[6:11]: 2, - strings.ToLower(_MakeName[6:11]): 2, - _MakeName[11:15]: 4, - strings.ToLower(_MakeName[11:15]): 4, - _MakeName[15:20]: 6, - strings.ToLower(_MakeName[15:20]): 6, - _MakeName[20:27]: 8, - strings.ToLower(_MakeName[20:27]): 8, - _MakeName[27:33]: 10, - strings.ToLower(_MakeName[27:33]): 10, - _MakeName[33:39]: 12, - strings.ToLower(_MakeName[33:39]): 12, - _MakeName[39:43]: 14, - strings.ToLower(_MakeName[39:43]): 14, - _MakeName[43:46]: 16, - strings.ToLower(_MakeName[43:46]): 16, - _MakeName[46:59]: 18, - strings.ToLower(_MakeName[46:59]): 18, - _MakeName[59:69]: 20, - strings.ToLower(_MakeName[59:69]): 20, + _MakeName[0:6]: MakeToyota, + strings.ToLower(_MakeName[0:6]): MakeToyota, + _MakeName[6:11]: MakeChevy, + strings.ToLower(_MakeName[6:11]): MakeChevy, + _MakeName[11:15]: MakeFord, + strings.ToLower(_MakeName[11:15]): MakeFord, + _MakeName[15:20]: MakeTesla, + strings.ToLower(_MakeName[15:20]): MakeTesla, + _MakeName[20:27]: MakeHyundai, + strings.ToLower(_MakeName[20:27]): MakeHyundai, + _MakeName[27:33]: MakeNissan, + strings.ToLower(_MakeName[27:33]): MakeNissan, + _MakeName[33:39]: MakeJaguar, + strings.ToLower(_MakeName[33:39]): MakeJaguar, + _MakeName[39:43]: MakeAudi, + strings.ToLower(_MakeName[39:43]): MakeAudi, + _MakeName[43:46]: MakeBMW, + strings.ToLower(_MakeName[43:46]): MakeBMW, + _MakeName[46:59]: MakeMercedesBenz, + strings.ToLower(_MakeName[46:59]): MakeMercedesBenz, + _MakeName[59:69]: MakeVolkswagon, + strings.ToLower(_MakeName[59:69]): MakeVolkswagon, } // ParseMake attempts to convert a string to a Make @@ -205,12 +205,12 @@ func NoZerosNames() []string { } var _NoZerosMap = map[NoZeros]string{ - 20: _NoZerosName[0:5], - 21: _NoZerosName[5:11], - 22: _NoZerosName[11:14], - 23: _NoZerosName[14:16], - 24: _NoZerosName[16:19], - 25: _NoZerosName[19:23], + NoZerosStart: _NoZerosName[0:5], + NoZerosMiddle: _NoZerosName[5:11], + NoZerosEnd: _NoZerosName[11:14], + NoZerosPs: _NoZerosName[14:16], + NoZerosPps: _NoZerosName[16:19], + NoZerosPpps: _NoZerosName[19:23], } // String implements the Stringer interface. @@ -222,18 +222,18 @@ func (x NoZeros) String() string { } var _NoZerosValue = map[string]NoZeros{ - _NoZerosName[0:5]: 20, - strings.ToLower(_NoZerosName[0:5]): 20, - _NoZerosName[5:11]: 21, - strings.ToLower(_NoZerosName[5:11]): 21, - _NoZerosName[11:14]: 22, - strings.ToLower(_NoZerosName[11:14]): 22, - _NoZerosName[14:16]: 23, - strings.ToLower(_NoZerosName[14:16]): 23, - _NoZerosName[16:19]: 24, - strings.ToLower(_NoZerosName[16:19]): 24, - _NoZerosName[19:23]: 25, - strings.ToLower(_NoZerosName[19:23]): 25, + _NoZerosName[0:5]: NoZerosStart, + strings.ToLower(_NoZerosName[0:5]): NoZerosStart, + _NoZerosName[5:11]: NoZerosMiddle, + strings.ToLower(_NoZerosName[5:11]): NoZerosMiddle, + _NoZerosName[11:14]: NoZerosEnd, + strings.ToLower(_NoZerosName[11:14]): NoZerosEnd, + _NoZerosName[14:16]: NoZerosPs, + strings.ToLower(_NoZerosName[14:16]): NoZerosPs, + _NoZerosName[16:19]: NoZerosPps, + strings.ToLower(_NoZerosName[16:19]): NoZerosPps, + _NoZerosName[19:23]: NoZerosPpps, + strings.ToLower(_NoZerosName[19:23]): NoZerosPpps, } // ParseNoZeros attempts to convert a string to a NoZeros diff --git a/example/globs/letter_enum.go b/example/globs/letter_enum.go index 77048521..be1d4fd9 100644 --- a/example/globs/letter_enum.go +++ b/example/globs/letter_enum.go @@ -68,32 +68,32 @@ const ( const _LetterName = "abcdefghijklmnopqrstuvwxyz" var _LetterMap = map[Letter]string{ - 0: _LetterName[0:1], - 1: _LetterName[1:2], - 2: _LetterName[2:3], - 3: _LetterName[3:4], - 4: _LetterName[4:5], - 5: _LetterName[5:6], - 6: _LetterName[6:7], - 7: _LetterName[7:8], - 8: _LetterName[8:9], - 9: _LetterName[9:10], - 10: _LetterName[10:11], - 11: _LetterName[11:12], - 12: _LetterName[12:13], - 13: _LetterName[13:14], - 14: _LetterName[14:15], - 15: _LetterName[15:16], - 16: _LetterName[16:17], - 17: _LetterName[17:18], - 18: _LetterName[18:19], - 19: _LetterName[19:20], - 20: _LetterName[20:21], - 21: _LetterName[21:22], - 22: _LetterName[22:23], - 23: _LetterName[23:24], - 24: _LetterName[24:25], - 25: _LetterName[25:26], + LetterA: _LetterName[0:1], + LetterB: _LetterName[1:2], + LetterC: _LetterName[2:3], + LetterD: _LetterName[3:4], + LetterE: _LetterName[4:5], + LetterF: _LetterName[5:6], + LetterG: _LetterName[6:7], + LetterH: _LetterName[7:8], + LetterI: _LetterName[8:9], + LetterJ: _LetterName[9:10], + LetterK: _LetterName[10:11], + LetterL: _LetterName[11:12], + LetterM: _LetterName[12:13], + LetterN: _LetterName[13:14], + LetterO: _LetterName[14:15], + LetterP: _LetterName[15:16], + LetterQ: _LetterName[16:17], + LetterR: _LetterName[17:18], + LetterS: _LetterName[18:19], + LetterT: _LetterName[19:20], + LetterU: _LetterName[20:21], + LetterV: _LetterName[21:22], + LetterW: _LetterName[22:23], + LetterX: _LetterName[23:24], + LetterY: _LetterName[24:25], + LetterZ: _LetterName[25:26], } // String implements the Stringer interface. @@ -105,32 +105,32 @@ func (x Letter) String() string { } var _LetterValue = map[string]Letter{ - _LetterName[0:1]: 0, - _LetterName[1:2]: 1, - _LetterName[2:3]: 2, - _LetterName[3:4]: 3, - _LetterName[4:5]: 4, - _LetterName[5:6]: 5, - _LetterName[6:7]: 6, - _LetterName[7:8]: 7, - _LetterName[8:9]: 8, - _LetterName[9:10]: 9, - _LetterName[10:11]: 10, - _LetterName[11:12]: 11, - _LetterName[12:13]: 12, - _LetterName[13:14]: 13, - _LetterName[14:15]: 14, - _LetterName[15:16]: 15, - _LetterName[16:17]: 16, - _LetterName[17:18]: 17, - _LetterName[18:19]: 18, - _LetterName[19:20]: 19, - _LetterName[20:21]: 20, - _LetterName[21:22]: 21, - _LetterName[22:23]: 22, - _LetterName[23:24]: 23, - _LetterName[24:25]: 24, - _LetterName[25:26]: 25, + _LetterName[0:1]: LetterA, + _LetterName[1:2]: LetterB, + _LetterName[2:3]: LetterC, + _LetterName[3:4]: LetterD, + _LetterName[4:5]: LetterE, + _LetterName[5:6]: LetterF, + _LetterName[6:7]: LetterG, + _LetterName[7:8]: LetterH, + _LetterName[8:9]: LetterI, + _LetterName[9:10]: LetterJ, + _LetterName[10:11]: LetterK, + _LetterName[11:12]: LetterL, + _LetterName[12:13]: LetterM, + _LetterName[13:14]: LetterN, + _LetterName[14:15]: LetterO, + _LetterName[15:16]: LetterP, + _LetterName[16:17]: LetterQ, + _LetterName[17:18]: LetterR, + _LetterName[18:19]: LetterS, + _LetterName[19:20]: LetterT, + _LetterName[20:21]: LetterU, + _LetterName[21:22]: LetterV, + _LetterName[22:23]: LetterW, + _LetterName[23:24]: LetterX, + _LetterName[24:25]: LetterY, + _LetterName[25:26]: LetterZ, } // ParseLetter attempts to convert a string to a Letter diff --git a/example/globs/number_enum.go b/example/globs/number_enum.go index 7c4c3e2a..46982e1c 100644 --- a/example/globs/number_enum.go +++ b/example/globs/number_enum.go @@ -36,16 +36,16 @@ const ( const _NumberName = "0123456789" var _NumberMap = map[Number]string{ - 0: _NumberName[0:1], - 1: _NumberName[1:2], - 2: _NumberName[2:3], - 3: _NumberName[3:4], - 4: _NumberName[4:5], - 5: _NumberName[5:6], - 6: _NumberName[6:7], - 7: _NumberName[7:8], - 8: _NumberName[8:9], - 9: _NumberName[9:10], + Number0: _NumberName[0:1], + Number1: _NumberName[1:2], + Number2: _NumberName[2:3], + Number3: _NumberName[3:4], + Number4: _NumberName[4:5], + Number5: _NumberName[5:6], + Number6: _NumberName[6:7], + Number7: _NumberName[7:8], + Number8: _NumberName[8:9], + Number9: _NumberName[9:10], } // String implements the Stringer interface. @@ -57,16 +57,16 @@ func (x Number) String() string { } var _NumberValue = map[string]Number{ - _NumberName[0:1]: 0, - _NumberName[1:2]: 1, - _NumberName[2:3]: 2, - _NumberName[3:4]: 3, - _NumberName[4:5]: 4, - _NumberName[5:6]: 5, - _NumberName[6:7]: 6, - _NumberName[7:8]: 7, - _NumberName[8:9]: 8, - _NumberName[9:10]: 9, + _NumberName[0:1]: Number0, + _NumberName[1:2]: Number1, + _NumberName[2:3]: Number2, + _NumberName[3:4]: Number3, + _NumberName[4:5]: Number4, + _NumberName[5:6]: Number5, + _NumberName[6:7]: Number6, + _NumberName[7:8]: Number7, + _NumberName[8:9]: Number8, + _NumberName[9:10]: Number9, } // ParseNumber attempts to convert a string to a Number diff --git a/example/sql_enum.go b/example/sql_enum.go index a7bf4bac..2ecd2277 100644 --- a/example/sql_enum.go +++ b/example/sql_enum.go @@ -28,10 +28,10 @@ const ( const _ProjectStatusName = "pendinginWorkcompletedrejected" var _ProjectStatusMap = map[ProjectStatus]string{ - 0: _ProjectStatusName[0:7], - 1: _ProjectStatusName[7:13], - 2: _ProjectStatusName[13:22], - 3: _ProjectStatusName[22:30], + ProjectStatusPending: _ProjectStatusName[0:7], + ProjectStatusInWork: _ProjectStatusName[7:13], + ProjectStatusCompleted: _ProjectStatusName[13:22], + ProjectStatusRejected: _ProjectStatusName[22:30], } // String implements the Stringer interface. @@ -43,10 +43,10 @@ func (x ProjectStatus) String() string { } var _ProjectStatusValue = map[string]ProjectStatus{ - _ProjectStatusName[0:7]: 0, - _ProjectStatusName[7:13]: 1, - _ProjectStatusName[13:22]: 2, - _ProjectStatusName[22:30]: 3, + _ProjectStatusName[0:7]: ProjectStatusPending, + _ProjectStatusName[7:13]: ProjectStatusInWork, + _ProjectStatusName[13:22]: ProjectStatusCompleted, + _ProjectStatusName[22:30]: ProjectStatusRejected, } // ParseProjectStatus attempts to convert a string to a ProjectStatus diff --git a/example/sql_int_enum.go b/example/sql_int_enum.go index cebd18dc..04d68c87 100644 --- a/example/sql_int_enum.go +++ b/example/sql_int_enum.go @@ -29,11 +29,11 @@ const ( const _ImageTypeName = "jpegjpgpngtiffgif" var _ImageTypeMap = map[ImageType]string{ - 0: _ImageTypeName[0:4], - 1: _ImageTypeName[4:7], - 2: _ImageTypeName[7:10], - 3: _ImageTypeName[10:14], - 4: _ImageTypeName[14:17], + ImageTypeJpeg: _ImageTypeName[0:4], + ImageTypeJpg: _ImageTypeName[4:7], + ImageTypePng: _ImageTypeName[7:10], + ImageTypeTiff: _ImageTypeName[10:14], + ImageTypeGif: _ImageTypeName[14:17], } // String implements the Stringer interface. @@ -45,11 +45,11 @@ func (x ImageType) String() string { } var _ImageTypeValue = map[string]ImageType{ - _ImageTypeName[0:4]: 0, - _ImageTypeName[4:7]: 1, - _ImageTypeName[7:10]: 2, - _ImageTypeName[10:14]: 3, - _ImageTypeName[14:17]: 4, + _ImageTypeName[0:4]: ImageTypeJpeg, + _ImageTypeName[4:7]: ImageTypeJpg, + _ImageTypeName[7:10]: ImageTypePng, + _ImageTypeName[10:14]: ImageTypeTiff, + _ImageTypeName[14:17]: ImageTypeGif, } // ParseImageType attempts to convert a string to a ImageType diff --git a/example/sql_str_enum.go b/example/sql_str_enum.go index 8956c680..1c73e048 100644 --- a/example/sql_str_enum.go +++ b/example/sql_str_enum.go @@ -26,10 +26,10 @@ const ( const _JobStateName = "pendingprocessingcompletedfailed" var _JobStateMap = map[JobState]string{ - 0: _JobStateName[0:7], - 1: _JobStateName[7:17], - 2: _JobStateName[17:26], - 3: _JobStateName[26:32], + JobStatePending: _JobStateName[0:7], + JobStateProcessing: _JobStateName[7:17], + JobStateCompleted: _JobStateName[17:26], + JobStateFailed: _JobStateName[26:32], } // String implements the Stringer interface. @@ -41,10 +41,10 @@ func (x JobState) String() string { } var _JobStateValue = map[string]JobState{ - _JobStateName[0:7]: 0, - _JobStateName[7:17]: 1, - _JobStateName[17:26]: 2, - _JobStateName[26:32]: 3, + _JobStateName[0:7]: JobStatePending, + _JobStateName[7:17]: JobStateProcessing, + _JobStateName[17:26]: JobStateCompleted, + _JobStateName[26:32]: JobStateFailed, } // ParseJobState attempts to convert a string to a JobState diff --git a/example/user_template_enum.go b/example/user_template_enum.go index e9dc7b2b..4783884b 100644 --- a/example/user_template_enum.go +++ b/example/user_template_enum.go @@ -22,9 +22,9 @@ const ( const _OceanColorName = "CeruleanBlueGreen" var _OceanColorMap = map[OceanColor]string{ - 0: _OceanColorName[0:8], - 1: _OceanColorName[8:12], - 2: _OceanColorName[12:17], + OceanColorCerulean: _OceanColorName[0:8], + OceanColorBlue: _OceanColorName[8:12], + OceanColorGreen: _OceanColorName[12:17], } // String implements the Stringer interface. @@ -36,9 +36,9 @@ func (x OceanColor) String() string { } var _OceanColorValue = map[string]OceanColor{ - _OceanColorName[0:8]: 0, - _OceanColorName[8:12]: 1, - _OceanColorName[12:17]: 2, + _OceanColorName[0:8]: OceanColorCerulean, + _OceanColorName[8:12]: OceanColorBlue, + _OceanColorName[12:17]: OceanColorGreen, } // ParseOceanColor attempts to convert a string to a OceanColor diff --git a/generator/.snapshots/generator-TestCustomPrefixExampleFile b/generator/.snapshots/generator-TestCustomPrefixExampleFile index bbb4a2a7..92be2a10 100644 --- a/generator/.snapshots/generator-TestCustomPrefixExampleFile +++ b/generator/.snapshots/generator-TestCustomPrefixExampleFile @@ -29,9 +29,9 @@ (string) (len=32) "const _AnimalName = \"CatDogFish\"", (string) "", (string) (len=35) "var _AnimalMap = map[Animal]string{", - (string) (len=21) "\t0: _AnimalName[0:3],", - (string) (len=21) "\t1: _AnimalName[3:6],", - (string) (len=22) "\t2: _AnimalName[6:10],", + (string) (len=38) "\tCustom_prefix_Cat: _AnimalName[0:3],", + (string) (len=38) "\tCustom_prefix_Dog: _AnimalName[3:6],", + (string) (len=39) "\tCustom_prefix_Fish: _AnimalName[6:10],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -43,12 +43,12 @@ (string) (len=1) "}", (string) "", (string) (len=37) "var _AnimalValue = map[string]Animal{", - (string) (len=39) "\t_AnimalName[0:3]: 0,", - (string) (len=39) "\tstrings.ToLower(_AnimalName[0:3]): 0,", - (string) (len=39) "\t_AnimalName[3:6]: 1,", - (string) (len=39) "\tstrings.ToLower(_AnimalName[3:6]): 1,", - (string) (len=39) "\t_AnimalName[6:10]: 2,", - (string) (len=39) "\tstrings.ToLower(_AnimalName[6:10]): 2,", + (string) (len=55) "\t_AnimalName[0:3]: Custom_prefix_Cat,", + (string) (len=55) "\tstrings.ToLower(_AnimalName[0:3]): Custom_prefix_Cat,", + (string) (len=55) "\t_AnimalName[3:6]: Custom_prefix_Dog,", + (string) (len=55) "\tstrings.ToLower(_AnimalName[3:6]): Custom_prefix_Dog,", + (string) (len=56) "\t_AnimalName[6:10]: Custom_prefix_Fish,", + (string) (len=56) "\tstrings.ToLower(_AnimalName[6:10]): Custom_prefix_Fish,", (string) (len=1) "}", (string) "", (string) (len=55) "// ParseAnimal attempts to convert a string to a Animal", @@ -291,9 +291,9 @@ (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", (string) "", (string) (len=33) "var _CasesMap = map[Cases]string{", - (string) (len=21) "\t0: _CasesName[0:10],", - (string) (len=22) "\t1: _CasesName[10:22],", - (string) (len=22) "\t2: _CasesName[22:43],", + (string) (len=55) "\tCustom_prefix_Test_lower: _CasesName[0:10],", + (string) (len=56) "\tCustom_prefix_Test_capital: _CasesName[10:22],", + (string) (len=56) "\tCustom_prefix_AnotherLowerCaseStart: _CasesName[22:43],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -305,12 +305,12 @@ (string) (len=1) "}", (string) "", (string) (len=35) "var _CasesValue = map[string]Cases{", - (string) (len=39) "\t_CasesName[0:10]: 0,", - (string) (len=39) "\tstrings.ToLower(_CasesName[0:10]): 0,", - (string) (len=39) "\t_CasesName[10:22]: 1,", - (string) (len=39) "\tstrings.ToLower(_CasesName[10:22]): 1,", - (string) (len=39) "\t_CasesName[22:43]: 2,", - (string) (len=39) "\tstrings.ToLower(_CasesName[22:43]): 2,", + (string) (len=62) "\t_CasesName[0:10]: Custom_prefix_Test_lower,", + (string) (len=62) "\tstrings.ToLower(_CasesName[0:10]): Custom_prefix_Test_lower,", + (string) (len=64) "\t_CasesName[10:22]: Custom_prefix_Test_capital,", + (string) (len=64) "\tstrings.ToLower(_CasesName[10:22]): Custom_prefix_Test_capital,", + (string) (len=73) "\t_CasesName[22:43]: Custom_prefix_AnotherLowerCaseStart,", + (string) (len=73) "\tstrings.ToLower(_CasesName[22:43]): Custom_prefix_AnotherLowerCaseStart,", (string) (len=1) "}", (string) "", (string) (len=53) "// ParseCases attempts to convert a string to a Cases", @@ -561,13 +561,13 @@ (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=33) "var _ColorMap = map[Color]string{", - (string) (len=21) "\t0: _ColorName[0:5],", - (string) (len=22) "\t1: _ColorName[5:10],", - (string) (len=23) "\t2: _ColorName[10:13],", - (string) (len=23) "\t3: _ColorName[13:18],", - (string) (len=23) "\t33: _ColorName[18:22],", - (string) (len=23) "\t34: _ColorName[22:26],", - (string) (len=23) "\t35: _ColorName[26:32],", + (string) (len=39) "\tCustom_prefix_Black: _ColorName[0:5],", + (string) (len=40) "\tCustom_prefix_White: _ColorName[5:10],", + (string) (len=41) "\tCustom_prefix_Red: _ColorName[10:13],", + (string) (len=41) "\tCustom_prefix_Green: _ColorName[13:18],", + (string) (len=41) "\tCustom_prefix_Blue: _ColorName[18:22],", + (string) (len=41) "\tCustom_prefix_Grey: _ColorName[22:26],", + (string) (len=41) "\tCustom_prefix_Yellow: _ColorName[26:32],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -579,20 +579,20 @@ (string) (len=1) "}", (string) "", (string) (len=35) "var _ColorValue = map[string]Color{", - (string) (len=39) "\t_ColorName[0:5]: 0,", - (string) (len=39) "\tstrings.ToLower(_ColorName[0:5]): 0,", - (string) (len=39) "\t_ColorName[5:10]: 1,", - (string) (len=39) "\tstrings.ToLower(_ColorName[5:10]): 1,", - (string) (len=39) "\t_ColorName[10:13]: 2,", - (string) (len=39) "\tstrings.ToLower(_ColorName[10:13]): 2,", - (string) (len=39) "\t_ColorName[13:18]: 3,", - (string) (len=39) "\tstrings.ToLower(_ColorName[13:18]): 3,", - (string) (len=40) "\t_ColorName[18:22]: 33,", - (string) (len=40) "\tstrings.ToLower(_ColorName[18:22]): 33,", - (string) (len=40) "\t_ColorName[22:26]: 34,", - (string) (len=40) "\tstrings.ToLower(_ColorName[22:26]): 34,", - (string) (len=40) "\t_ColorName[26:32]: 35,", - (string) (len=40) "\tstrings.ToLower(_ColorName[26:32]): 35,", + (string) (len=57) "\t_ColorName[0:5]: Custom_prefix_Black,", + (string) (len=57) "\tstrings.ToLower(_ColorName[0:5]): Custom_prefix_Black,", + (string) (len=57) "\t_ColorName[5:10]: Custom_prefix_White,", + (string) (len=57) "\tstrings.ToLower(_ColorName[5:10]): Custom_prefix_White,", + (string) (len=55) "\t_ColorName[10:13]: Custom_prefix_Red,", + (string) (len=55) "\tstrings.ToLower(_ColorName[10:13]): Custom_prefix_Red,", + (string) (len=57) "\t_ColorName[13:18]: Custom_prefix_Green,", + (string) (len=57) "\tstrings.ToLower(_ColorName[13:18]): Custom_prefix_Green,", + (string) (len=56) "\t_ColorName[18:22]: Custom_prefix_Blue,", + (string) (len=56) "\tstrings.ToLower(_ColorName[18:22]): Custom_prefix_Blue,", + (string) (len=56) "\t_ColorName[22:26]: Custom_prefix_Grey,", + (string) (len=56) "\tstrings.ToLower(_ColorName[22:26]): Custom_prefix_Grey,", + (string) (len=58) "\t_ColorName[26:32]: Custom_prefix_Yellow,", + (string) (len=58) "\tstrings.ToLower(_ColorName[26:32]): Custom_prefix_Yellow,", (string) (len=1) "}", (string) "", (string) (len=53) "// ParseColor attempts to convert a string to a Color", @@ -844,13 +844,13 @@ (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", - (string) (len=32) "\t0: _ColorWithCommentName[0:5],", - (string) (len=33) "\t1: _ColorWithCommentName[5:10],", - (string) (len=34) "\t2: _ColorWithCommentName[10:13],", - (string) (len=34) "\t3: _ColorWithCommentName[13:18],", - (string) (len=34) "\t33: _ColorWithCommentName[18:22],", - (string) (len=34) "\t34: _ColorWithCommentName[22:26],", - (string) (len=34) "\t35: _ColorWithCommentName[26:32],", + (string) (len=50) "\tCustom_prefix_Black: _ColorWithCommentName[0:5],", + (string) (len=51) "\tCustom_prefix_White: _ColorWithCommentName[5:10],", + (string) (len=52) "\tCustom_prefix_Red: _ColorWithCommentName[10:13],", + (string) (len=52) "\tCustom_prefix_Green: _ColorWithCommentName[13:18],", + (string) (len=52) "\tCustom_prefix_Blue: _ColorWithCommentName[18:22],", + (string) (len=52) "\tCustom_prefix_Grey: _ColorWithCommentName[22:26],", + (string) (len=52) "\tCustom_prefix_Yellow: _ColorWithCommentName[26:32],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -862,20 +862,20 @@ (string) (len=1) "}", (string) "", (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", - (string) (len=50) "\t_ColorWithCommentName[0:5]: 0,", - (string) (len=50) "\tstrings.ToLower(_ColorWithCommentName[0:5]): 0,", - (string) (len=50) "\t_ColorWithCommentName[5:10]: 1,", - (string) (len=50) "\tstrings.ToLower(_ColorWithCommentName[5:10]): 1,", - (string) (len=50) "\t_ColorWithCommentName[10:13]: 2,", - (string) (len=50) "\tstrings.ToLower(_ColorWithCommentName[10:13]): 2,", - (string) (len=50) "\t_ColorWithCommentName[13:18]: 3,", - (string) (len=50) "\tstrings.ToLower(_ColorWithCommentName[13:18]): 3,", - (string) (len=51) "\t_ColorWithCommentName[18:22]: 33,", - (string) (len=51) "\tstrings.ToLower(_ColorWithCommentName[18:22]): 33,", - (string) (len=51) "\t_ColorWithCommentName[22:26]: 34,", - (string) (len=51) "\tstrings.ToLower(_ColorWithCommentName[22:26]): 34,", - (string) (len=51) "\t_ColorWithCommentName[26:32]: 35,", - (string) (len=51) "\tstrings.ToLower(_ColorWithCommentName[26:32]): 35,", + (string) (len=68) "\t_ColorWithCommentName[0:5]: Custom_prefix_Black,", + (string) (len=68) "\tstrings.ToLower(_ColorWithCommentName[0:5]): Custom_prefix_Black,", + (string) (len=68) "\t_ColorWithCommentName[5:10]: Custom_prefix_White,", + (string) (len=68) "\tstrings.ToLower(_ColorWithCommentName[5:10]): Custom_prefix_White,", + (string) (len=66) "\t_ColorWithCommentName[10:13]: Custom_prefix_Red,", + (string) (len=66) "\tstrings.ToLower(_ColorWithCommentName[10:13]): Custom_prefix_Red,", + (string) (len=68) "\t_ColorWithCommentName[13:18]: Custom_prefix_Green,", + (string) (len=68) "\tstrings.ToLower(_ColorWithCommentName[13:18]): Custom_prefix_Green,", + (string) (len=67) "\t_ColorWithCommentName[18:22]: Custom_prefix_Blue,", + (string) (len=67) "\tstrings.ToLower(_ColorWithCommentName[18:22]): Custom_prefix_Blue,", + (string) (len=67) "\t_ColorWithCommentName[22:26]: Custom_prefix_Grey,", + (string) (len=67) "\tstrings.ToLower(_ColorWithCommentName[22:26]): Custom_prefix_Grey,", + (string) (len=69) "\t_ColorWithCommentName[26:32]: Custom_prefix_Yellow,", + (string) (len=69) "\tstrings.ToLower(_ColorWithCommentName[26:32]): Custom_prefix_Yellow,", (string) (len=1) "}", (string) "", (string) (len=75) "// ParseColorWithComment attempts to convert a string to a ColorWithComment", @@ -1127,13 +1127,13 @@ (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", - (string) (len=33) "\t0: _ColorWithComment2Name[0:5],", - (string) (len=34) "\t1: _ColorWithComment2Name[5:10],", - (string) (len=35) "\t2: _ColorWithComment2Name[10:13],", - (string) (len=35) "\t3: _ColorWithComment2Name[13:18],", - (string) (len=35) "\t33: _ColorWithComment2Name[18:22],", - (string) (len=35) "\t34: _ColorWithComment2Name[22:26],", - (string) (len=35) "\t35: _ColorWithComment2Name[26:32],", + (string) (len=51) "\tCustom_prefix_Black: _ColorWithComment2Name[0:5],", + (string) (len=52) "\tCustom_prefix_White: _ColorWithComment2Name[5:10],", + (string) (len=53) "\tCustom_prefix_Red: _ColorWithComment2Name[10:13],", + (string) (len=53) "\tCustom_prefix_Green: _ColorWithComment2Name[13:18],", + (string) (len=53) "\tCustom_prefix_Blue: _ColorWithComment2Name[18:22],", + (string) (len=53) "\tCustom_prefix_Grey: _ColorWithComment2Name[22:26],", + (string) (len=53) "\tCustom_prefix_Yellow: _ColorWithComment2Name[26:32],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -1145,20 +1145,20 @@ (string) (len=1) "}", (string) "", (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", - (string) (len=51) "\t_ColorWithComment2Name[0:5]: 0,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): 0,", - (string) (len=51) "\t_ColorWithComment2Name[5:10]: 1,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment2Name[5:10]): 1,", - (string) (len=51) "\t_ColorWithComment2Name[10:13]: 2,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment2Name[10:13]): 2,", - (string) (len=51) "\t_ColorWithComment2Name[13:18]: 3,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment2Name[13:18]): 3,", - (string) (len=52) "\t_ColorWithComment2Name[18:22]: 33,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment2Name[18:22]): 33,", - (string) (len=52) "\t_ColorWithComment2Name[22:26]: 34,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment2Name[22:26]): 34,", - (string) (len=52) "\t_ColorWithComment2Name[26:32]: 35,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): 35,", + (string) (len=69) "\t_ColorWithComment2Name[0:5]: Custom_prefix_Black,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): Custom_prefix_Black,", + (string) (len=69) "\t_ColorWithComment2Name[5:10]: Custom_prefix_White,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment2Name[5:10]): Custom_prefix_White,", + (string) (len=67) "\t_ColorWithComment2Name[10:13]: Custom_prefix_Red,", + (string) (len=67) "\tstrings.ToLower(_ColorWithComment2Name[10:13]): Custom_prefix_Red,", + (string) (len=69) "\t_ColorWithComment2Name[13:18]: Custom_prefix_Green,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment2Name[13:18]): Custom_prefix_Green,", + (string) (len=68) "\t_ColorWithComment2Name[18:22]: Custom_prefix_Blue,", + (string) (len=68) "\tstrings.ToLower(_ColorWithComment2Name[18:22]): Custom_prefix_Blue,", + (string) (len=68) "\t_ColorWithComment2Name[22:26]: Custom_prefix_Grey,", + (string) (len=68) "\tstrings.ToLower(_ColorWithComment2Name[22:26]): Custom_prefix_Grey,", + (string) (len=70) "\t_ColorWithComment2Name[26:32]: Custom_prefix_Yellow,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): Custom_prefix_Yellow,", (string) (len=1) "}", (string) "", (string) (len=77) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2", @@ -1417,16 +1417,16 @@ (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", (string) "", (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", - (string) (len=33) "\t0: _ColorWithComment3Name[0:5],", - (string) (len=34) "\t1: _ColorWithComment3Name[5:10],", - (string) (len=35) "\t2: _ColorWithComment3Name[10:13],", - (string) (len=35) "\t33: _ColorWithComment3Name[13:18],", - (string) (len=35) "\t34: _ColorWithComment3Name[18:22],", - (string) (len=35) "\t35: _ColorWithComment3Name[22:26],", - (string) (len=35) "\t36: _ColorWithComment3Name[26:32],", - (string) (len=35) "\t37: _ColorWithComment3Name[32:42],", - (string) (len=35) "\t38: _ColorWithComment3Name[42:52],", - (string) (len=35) "\t39: _ColorWithComment3Name[52:67],", + (string) (len=58) "\tCustom_prefix_Black: _ColorWithComment3Name[0:5],", + (string) (len=59) "\tCustom_prefix_White: _ColorWithComment3Name[5:10],", + (string) (len=60) "\tCustom_prefix_Red: _ColorWithComment3Name[10:13],", + (string) (len=60) "\tCustom_prefix_Green: _ColorWithComment3Name[13:18],", + (string) (len=60) "\tCustom_prefix_Blue: _ColorWithComment3Name[18:22],", + (string) (len=60) "\tCustom_prefix_Grey: _ColorWithComment3Name[22:26],", + (string) (len=60) "\tCustom_prefix_Yellow: _ColorWithComment3Name[26:32],", + (string) (len=60) "\tCustom_prefix_BlueGreen: _ColorWithComment3Name[32:42],", + (string) (len=60) "\tCustom_prefix_RedOrange: _ColorWithComment3Name[42:52],", + (string) (len=60) "\tCustom_prefix_RedOrangeBlue: _ColorWithComment3Name[52:67],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -1438,26 +1438,26 @@ (string) (len=1) "}", (string) "", (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", - (string) (len=51) "\t_ColorWithComment3Name[0:5]: 0,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): 0,", - (string) (len=51) "\t_ColorWithComment3Name[5:10]: 1,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment3Name[5:10]): 1,", - (string) (len=51) "\t_ColorWithComment3Name[10:13]: 2,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment3Name[10:13]): 2,", - (string) (len=52) "\t_ColorWithComment3Name[13:18]: 33,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[13:18]): 33,", - (string) (len=52) "\t_ColorWithComment3Name[18:22]: 34,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[18:22]): 34,", - (string) (len=52) "\t_ColorWithComment3Name[22:26]: 35,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[22:26]): 35,", - (string) (len=52) "\t_ColorWithComment3Name[26:32]: 36,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[26:32]): 36,", - (string) (len=52) "\t_ColorWithComment3Name[32:42]: 37,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[32:42]): 37,", - (string) (len=52) "\t_ColorWithComment3Name[42:52]: 38,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[42:52]): 38,", - (string) (len=52) "\t_ColorWithComment3Name[52:67]: 39,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): 39,", + (string) (len=69) "\t_ColorWithComment3Name[0:5]: Custom_prefix_Black,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): Custom_prefix_Black,", + (string) (len=69) "\t_ColorWithComment3Name[5:10]: Custom_prefix_White,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment3Name[5:10]): Custom_prefix_White,", + (string) (len=67) "\t_ColorWithComment3Name[10:13]: Custom_prefix_Red,", + (string) (len=67) "\tstrings.ToLower(_ColorWithComment3Name[10:13]): Custom_prefix_Red,", + (string) (len=69) "\t_ColorWithComment3Name[13:18]: Custom_prefix_Green,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment3Name[13:18]): Custom_prefix_Green,", + (string) (len=68) "\t_ColorWithComment3Name[18:22]: Custom_prefix_Blue,", + (string) (len=68) "\tstrings.ToLower(_ColorWithComment3Name[18:22]): Custom_prefix_Blue,", + (string) (len=68) "\t_ColorWithComment3Name[22:26]: Custom_prefix_Grey,", + (string) (len=68) "\tstrings.ToLower(_ColorWithComment3Name[22:26]): Custom_prefix_Grey,", + (string) (len=70) "\t_ColorWithComment3Name[26:32]: Custom_prefix_Yellow,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment3Name[26:32]): Custom_prefix_Yellow,", + (string) (len=73) "\t_ColorWithComment3Name[32:42]: Custom_prefix_BlueGreen,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment3Name[32:42]): Custom_prefix_BlueGreen,", + (string) (len=73) "\t_ColorWithComment3Name[42:52]: Custom_prefix_RedOrange,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment3Name[42:52]): Custom_prefix_RedOrange,", + (string) (len=77) "\t_ColorWithComment3Name[52:67]: Custom_prefix_RedOrangeBlue,", + (string) (len=77) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): Custom_prefix_RedOrangeBlue,", (string) (len=1) "}", (string) "", (string) (len=77) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3", @@ -1719,15 +1719,15 @@ (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", (string) "", (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", - (string) (len=33) "\t1: _ColorWithComment4Name[0:5],", - (string) (len=34) "\t2: _ColorWithComment4Name[5:10],", - (string) (len=35) "\t3: _ColorWithComment4Name[10:13],", - (string) (len=35) "\t33: _ColorWithComment4Name[13:18],", - (string) (len=35) "\t34: _ColorWithComment4Name[18:22],", - (string) (len=35) "\t35: _ColorWithComment4Name[22:26],", - (string) (len=35) "\t36: _ColorWithComment4Name[26:32],", - (string) (len=35) "\t37: _ColorWithComment4Name[32:42],", - (string) (len=35) "\t38: _ColorWithComment4Name[42:52],", + (string) (len=54) "\tCustom_prefix_Black: _ColorWithComment4Name[0:5],", + (string) (len=55) "\tCustom_prefix_White: _ColorWithComment4Name[5:10],", + (string) (len=56) "\tCustom_prefix_Red: _ColorWithComment4Name[10:13],", + (string) (len=56) "\tCustom_prefix_Green: _ColorWithComment4Name[13:18],", + (string) (len=56) "\tCustom_prefix_Blue: _ColorWithComment4Name[18:22],", + (string) (len=56) "\tCustom_prefix_Grey: _ColorWithComment4Name[22:26],", + (string) (len=56) "\tCustom_prefix_Yellow: _ColorWithComment4Name[26:32],", + (string) (len=56) "\tCustom_prefix_BlueGreen: _ColorWithComment4Name[32:42],", + (string) (len=56) "\tCustom_prefix_RedOrange: _ColorWithComment4Name[42:52],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -1739,24 +1739,24 @@ (string) (len=1) "}", (string) "", (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", - (string) (len=51) "\t_ColorWithComment4Name[0:5]: 1,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): 1,", - (string) (len=51) "\t_ColorWithComment4Name[5:10]: 2,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment4Name[5:10]): 2,", - (string) (len=51) "\t_ColorWithComment4Name[10:13]: 3,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment4Name[10:13]): 3,", - (string) (len=52) "\t_ColorWithComment4Name[13:18]: 33,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[13:18]): 33,", - (string) (len=52) "\t_ColorWithComment4Name[18:22]: 34,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[18:22]): 34,", - (string) (len=52) "\t_ColorWithComment4Name[22:26]: 35,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[22:26]): 35,", - (string) (len=52) "\t_ColorWithComment4Name[26:32]: 36,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[26:32]): 36,", - (string) (len=52) "\t_ColorWithComment4Name[32:42]: 37,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[32:42]): 37,", - (string) (len=52) "\t_ColorWithComment4Name[42:52]: 38,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): 38,", + (string) (len=69) "\t_ColorWithComment4Name[0:5]: Custom_prefix_Black,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): Custom_prefix_Black,", + (string) (len=69) "\t_ColorWithComment4Name[5:10]: Custom_prefix_White,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment4Name[5:10]): Custom_prefix_White,", + (string) (len=67) "\t_ColorWithComment4Name[10:13]: Custom_prefix_Red,", + (string) (len=67) "\tstrings.ToLower(_ColorWithComment4Name[10:13]): Custom_prefix_Red,", + (string) (len=69) "\t_ColorWithComment4Name[13:18]: Custom_prefix_Green,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment4Name[13:18]): Custom_prefix_Green,", + (string) (len=68) "\t_ColorWithComment4Name[18:22]: Custom_prefix_Blue,", + (string) (len=68) "\tstrings.ToLower(_ColorWithComment4Name[18:22]): Custom_prefix_Blue,", + (string) (len=68) "\t_ColorWithComment4Name[22:26]: Custom_prefix_Grey,", + (string) (len=68) "\tstrings.ToLower(_ColorWithComment4Name[22:26]): Custom_prefix_Grey,", + (string) (len=70) "\t_ColorWithComment4Name[26:32]: Custom_prefix_Yellow,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment4Name[26:32]): Custom_prefix_Yellow,", + (string) (len=73) "\t_ColorWithComment4Name[32:42]: Custom_prefix_BlueGreen,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment4Name[32:42]): Custom_prefix_BlueGreen,", + (string) (len=73) "\t_ColorWithComment4Name[42:52]: Custom_prefix_RedOrange,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): Custom_prefix_RedOrange,", (string) (len=1) "}", (string) "", (string) (len=77) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4", @@ -2003,9 +2003,9 @@ (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", (string) "", (string) (len=33) "var _ModelMap = map[Model]string{", - (string) (len=20) "\t0: _ModelName[0:6],", - (string) (len=21) "\t2: _ModelName[6:11],", - (string) (len=22) "\t4: _ModelName[11:15],", + (string) (len=39) "\tCustom_prefix_Toyota: _ModelName[0:6],", + (string) (len=40) "\tCustom_prefix_Chevy: _ModelName[6:11],", + (string) (len=41) "\tCustom_prefix_Ford: _ModelName[11:15],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -2017,12 +2017,12 @@ (string) (len=1) "}", (string) "", (string) (len=35) "var _ModelValue = map[string]Model{", - (string) (len=39) "\t_ModelName[0:6]: 0,", - (string) (len=39) "\tstrings.ToLower(_ModelName[0:6]): 0,", - (string) (len=39) "\t_ModelName[6:11]: 2,", - (string) (len=39) "\tstrings.ToLower(_ModelName[6:11]): 2,", - (string) (len=39) "\t_ModelName[11:15]: 4,", - (string) (len=39) "\tstrings.ToLower(_ModelName[11:15]): 4,", + (string) (len=58) "\t_ModelName[0:6]: Custom_prefix_Toyota,", + (string) (len=58) "\tstrings.ToLower(_ModelName[0:6]): Custom_prefix_Toyota,", + (string) (len=57) "\t_ModelName[6:11]: Custom_prefix_Chevy,", + (string) (len=57) "\tstrings.ToLower(_ModelName[6:11]): Custom_prefix_Chevy,", + (string) (len=56) "\t_ModelName[11:15]: Custom_prefix_Ford,", + (string) (len=56) "\tstrings.ToLower(_ModelName[11:15]): Custom_prefix_Ford,", (string) (len=1) "}", (string) "", (string) (len=53) "// ParseModel attempts to convert a string to a Model", @@ -2273,13 +2273,13 @@ (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", (string) "", (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", - (string) (len=26) "\t0: _SanitizingName[0:11],", - (string) (len=27) "\t1: _SanitizingName[11:23],", - (string) (len=27) "\t2: _SanitizingName[23:39],", - (string) (len=27) "\t3: _SanitizingName[39:51],", - (string) (len=27) "\t4: _SanitizingName[51:61],", - (string) (len=27) "\t5: _SanitizingName[61:72],", - (string) (len=27) "\t6: _SanitizingName[72:86],", + (string) (len=55) "\tCustom_prefix_TestHyphen: _SanitizingName[0:11],", + (string) (len=56) "\tCustom_prefix_HyphenStart: _SanitizingName[11:23],", + (string) (len=56) "\tCustom_prefix__underscoreFirst: _SanitizingName[23:39],", + (string) (len=56) "\tCustom_prefix_0numberFirst: _SanitizingName[39:51],", + (string) (len=56) "\tCustom_prefix_123456789a: _SanitizingName[51:61],", + (string) (len=56) "\tCustom_prefix_123123Asdf: _SanitizingName[61:72],", + (string) (len=56) "\tCustom_prefix_EndingHyphen: _SanitizingName[72:86],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -2291,20 +2291,20 @@ (string) (len=1) "}", (string) "", (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", - (string) (len=44) "\t_SanitizingName[0:11]: 0,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[0:11]): 0,", - (string) (len=44) "\t_SanitizingName[11:23]: 1,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[11:23]): 1,", - (string) (len=44) "\t_SanitizingName[23:39]: 2,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[23:39]): 2,", - (string) (len=44) "\t_SanitizingName[39:51]: 3,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[39:51]): 3,", - (string) (len=44) "\t_SanitizingName[51:61]: 4,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[51:61]): 4,", - (string) (len=44) "\t_SanitizingName[61:72]: 5,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[61:72]): 5,", - (string) (len=44) "\t_SanitizingName[72:86]: 6,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[72:86]): 6,", + (string) (len=67) "\t_SanitizingName[0:11]: Custom_prefix_TestHyphen,", + (string) (len=67) "\tstrings.ToLower(_SanitizingName[0:11]): Custom_prefix_TestHyphen,", + (string) (len=68) "\t_SanitizingName[11:23]: Custom_prefix_HyphenStart,", + (string) (len=68) "\tstrings.ToLower(_SanitizingName[11:23]): Custom_prefix_HyphenStart,", + (string) (len=73) "\t_SanitizingName[23:39]: Custom_prefix__underscoreFirst,", + (string) (len=73) "\tstrings.ToLower(_SanitizingName[23:39]): Custom_prefix__underscoreFirst,", + (string) (len=69) "\t_SanitizingName[39:51]: Custom_prefix_0numberFirst,", + (string) (len=69) "\tstrings.ToLower(_SanitizingName[39:51]): Custom_prefix_0numberFirst,", + (string) (len=67) "\t_SanitizingName[51:61]: Custom_prefix_123456789a,", + (string) (len=67) "\tstrings.ToLower(_SanitizingName[51:61]): Custom_prefix_123456789a,", + (string) (len=67) "\t_SanitizingName[61:72]: Custom_prefix_123123Asdf,", + (string) (len=67) "\tstrings.ToLower(_SanitizingName[61:72]): Custom_prefix_123123Asdf,", + (string) (len=69) "\t_SanitizingName[72:86]: Custom_prefix_EndingHyphen,", + (string) (len=69) "\tstrings.ToLower(_SanitizingName[72:86]): Custom_prefix_EndingHyphen,", (string) (len=1) "}", (string) "", (string) (len=63) "// ParseSanitizing attempts to convert a string to a Sanitizing", @@ -2547,9 +2547,9 @@ (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", (string) "", (string) (len=31) "var _SodaMap = map[Soda]string{", - (string) (len=19) "\t0: _SodaName[0:4],", - (string) (len=19) "\t1: _SodaName[4:9],", - (string) (len=20) "\t2: _SodaName[9:15],", + (string) (len=38) "\tCustom_prefix_Coke: _SodaName[0:4],", + (string) (len=38) "\tCustom_prefix_Pepsi: _SodaName[4:9],", + (string) (len=39) "\tCustom_prefix_MtnDew: _SodaName[9:15],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -2561,12 +2561,12 @@ (string) (len=1) "}", (string) "", (string) (len=33) "var _SodaValue = map[string]Soda{", - (string) (len=37) "\t_SodaName[0:4]: 0,", - (string) (len=37) "\tstrings.ToLower(_SodaName[0:4]): 0,", - (string) (len=37) "\t_SodaName[4:9]: 1,", - (string) (len=37) "\tstrings.ToLower(_SodaName[4:9]): 1,", - (string) (len=37) "\t_SodaName[9:15]: 2,", - (string) (len=37) "\tstrings.ToLower(_SodaName[9:15]): 2,", + (string) (len=54) "\t_SodaName[0:4]: Custom_prefix_Coke,", + (string) (len=54) "\tstrings.ToLower(_SodaName[0:4]): Custom_prefix_Coke,", + (string) (len=55) "\t_SodaName[4:9]: Custom_prefix_Pepsi,", + (string) (len=55) "\tstrings.ToLower(_SodaName[4:9]): Custom_prefix_Pepsi,", + (string) (len=56) "\t_SodaName[9:15]: Custom_prefix_MtnDew,", + (string) (len=56) "\tstrings.ToLower(_SodaName[9:15]): Custom_prefix_MtnDew,", (string) (len=1) "}", (string) "", (string) (len=51) "// ParseSoda attempts to convert a string to a Soda", @@ -2807,8 +2807,8 @@ (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", (string) "", (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", - (string) (len=29) "\t23: _StartNotZeroName[0:12],", - (string) (len=30) "\t24: _StartNotZeroName[12:19],", + (string) (len=53) "\tCustom_prefix_StartWithNum: _StartNotZeroName[0:12],", + (string) (len=54) "\tCustom_prefix_NextNum: _StartNotZeroName[12:19],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -2820,10 +2820,10 @@ (string) (len=1) "}", (string) "", (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", - (string) (len=47) "\t_StartNotZeroName[0:12]: 23,", - (string) (len=47) "\tstrings.ToLower(_StartNotZeroName[0:12]): 23,", - (string) (len=47) "\t_StartNotZeroName[12:19]: 24,", - (string) (len=47) "\tstrings.ToLower(_StartNotZeroName[12:19]): 24,", + (string) (len=71) "\t_StartNotZeroName[0:12]: Custom_prefix_StartWithNum,", + (string) (len=71) "\tstrings.ToLower(_StartNotZeroName[0:12]): Custom_prefix_StartWithNum,", + (string) (len=66) "\t_StartNotZeroName[12:19]: Custom_prefix_NextNum,", + (string) (len=66) "\tstrings.ToLower(_StartNotZeroName[12:19]): Custom_prefix_NextNum,", (string) (len=1) "}", (string) "", (string) (len=67) "// ParseStartNotZero attempts to convert a string to a StartNotZero", diff --git a/generator/.snapshots/generator-TestExampleFile b/generator/.snapshots/generator-TestExampleFile index a5dacc38..f3d738ee 100644 --- a/generator/.snapshots/generator-TestExampleFile +++ b/generator/.snapshots/generator-TestExampleFile @@ -40,9 +40,9 @@ (string) (len=1) "}", (string) "", (string) (len=35) "var _AnimalMap = map[Animal]string{", - (string) (len=21) "\t0: _AnimalName[0:3],", - (string) (len=21) "\t1: _AnimalName[3:6],", - (string) (len=22) "\t2: _AnimalName[6:10],", + (string) (len=30) "\tAnimalCat: _AnimalName[0:3],", + (string) (len=30) "\tAnimalDog: _AnimalName[3:6],", + (string) (len=31) "\tAnimalFish: _AnimalName[6:10],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -54,12 +54,12 @@ (string) (len=1) "}", (string) "", (string) (len=37) "var _AnimalValue = map[string]Animal{", - (string) (len=39) "\t_AnimalName[0:3]: 0,", - (string) (len=39) "\tstrings.ToLower(_AnimalName[0:3]): 0,", - (string) (len=39) "\t_AnimalName[3:6]: 1,", - (string) (len=39) "\tstrings.ToLower(_AnimalName[3:6]): 1,", - (string) (len=39) "\t_AnimalName[6:10]: 2,", - (string) (len=39) "\tstrings.ToLower(_AnimalName[6:10]): 2,", + (string) (len=47) "\t_AnimalName[0:3]: AnimalCat,", + (string) (len=47) "\tstrings.ToLower(_AnimalName[0:3]): AnimalCat,", + (string) (len=47) "\t_AnimalName[3:6]: AnimalDog,", + (string) (len=47) "\tstrings.ToLower(_AnimalName[3:6]): AnimalDog,", + (string) (len=48) "\t_AnimalName[6:10]: AnimalFish,", + (string) (len=48) "\tstrings.ToLower(_AnimalName[6:10]): AnimalFish,", (string) (len=1) "}", (string) "", (string) (len=55) "// ParseAnimal attempts to convert a string to a Animal", @@ -188,9 +188,9 @@ (string) (len=1) "}", (string) "", (string) (len=33) "var _CasesMap = map[Cases]string{", - (string) (len=21) "\t0: _CasesName[0:10],", - (string) (len=22) "\t1: _CasesName[10:22],", - (string) (len=22) "\t2: _CasesName[22:43],", + (string) (len=46) "\tCasesTest_lower: _CasesName[0:10],", + (string) (len=47) "\tCasesTest_capital: _CasesName[10:22],", + (string) (len=47) "\tCasesAnotherLowerCaseStart: _CasesName[22:43],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -202,12 +202,12 @@ (string) (len=1) "}", (string) "", (string) (len=35) "var _CasesValue = map[string]Cases{", - (string) (len=39) "\t_CasesName[0:10]: 0,", - (string) (len=39) "\tstrings.ToLower(_CasesName[0:10]): 0,", - (string) (len=39) "\t_CasesName[10:22]: 1,", - (string) (len=39) "\tstrings.ToLower(_CasesName[10:22]): 1,", - (string) (len=39) "\t_CasesName[22:43]: 2,", - (string) (len=39) "\tstrings.ToLower(_CasesName[22:43]): 2,", + (string) (len=53) "\t_CasesName[0:10]: CasesTest_lower,", + (string) (len=53) "\tstrings.ToLower(_CasesName[0:10]): CasesTest_lower,", + (string) (len=55) "\t_CasesName[10:22]: CasesTest_capital,", + (string) (len=55) "\tstrings.ToLower(_CasesName[10:22]): CasesTest_capital,", + (string) (len=64) "\t_CasesName[22:43]: CasesAnotherLowerCaseStart,", + (string) (len=64) "\tstrings.ToLower(_CasesName[22:43]): CasesAnotherLowerCaseStart,", (string) (len=1) "}", (string) "", (string) (len=53) "// ParseCases attempts to convert a string to a Cases", @@ -348,13 +348,13 @@ (string) (len=1) "}", (string) "", (string) (len=33) "var _ColorMap = map[Color]string{", - (string) (len=21) "\t0: _ColorName[0:5],", - (string) (len=22) "\t1: _ColorName[5:10],", - (string) (len=23) "\t2: _ColorName[10:13],", - (string) (len=23) "\t3: _ColorName[13:18],", - (string) (len=23) "\t33: _ColorName[18:22],", - (string) (len=23) "\t34: _ColorName[22:26],", - (string) (len=23) "\t35: _ColorName[26:32],", + (string) (len=30) "\tColorBlack: _ColorName[0:5],", + (string) (len=31) "\tColorWhite: _ColorName[5:10],", + (string) (len=32) "\tColorRed: _ColorName[10:13],", + (string) (len=32) "\tColorGreen: _ColorName[13:18],", + (string) (len=32) "\tColorBlue: _ColorName[18:22],", + (string) (len=32) "\tColorGrey: _ColorName[22:26],", + (string) (len=32) "\tColorYellow: _ColorName[26:32],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -366,20 +366,20 @@ (string) (len=1) "}", (string) "", (string) (len=35) "var _ColorValue = map[string]Color{", - (string) (len=39) "\t_ColorName[0:5]: 0,", - (string) (len=39) "\tstrings.ToLower(_ColorName[0:5]): 0,", - (string) (len=39) "\t_ColorName[5:10]: 1,", - (string) (len=39) "\tstrings.ToLower(_ColorName[5:10]): 1,", - (string) (len=39) "\t_ColorName[10:13]: 2,", - (string) (len=39) "\tstrings.ToLower(_ColorName[10:13]): 2,", - (string) (len=39) "\t_ColorName[13:18]: 3,", - (string) (len=39) "\tstrings.ToLower(_ColorName[13:18]): 3,", - (string) (len=40) "\t_ColorName[18:22]: 33,", - (string) (len=40) "\tstrings.ToLower(_ColorName[18:22]): 33,", - (string) (len=40) "\t_ColorName[22:26]: 34,", - (string) (len=40) "\tstrings.ToLower(_ColorName[22:26]): 34,", - (string) (len=40) "\t_ColorName[26:32]: 35,", - (string) (len=40) "\tstrings.ToLower(_ColorName[26:32]): 35,", + (string) (len=48) "\t_ColorName[0:5]: ColorBlack,", + (string) (len=48) "\tstrings.ToLower(_ColorName[0:5]): ColorBlack,", + (string) (len=48) "\t_ColorName[5:10]: ColorWhite,", + (string) (len=48) "\tstrings.ToLower(_ColorName[5:10]): ColorWhite,", + (string) (len=46) "\t_ColorName[10:13]: ColorRed,", + (string) (len=46) "\tstrings.ToLower(_ColorName[10:13]): ColorRed,", + (string) (len=48) "\t_ColorName[13:18]: ColorGreen,", + (string) (len=48) "\tstrings.ToLower(_ColorName[13:18]): ColorGreen,", + (string) (len=47) "\t_ColorName[18:22]: ColorBlue,", + (string) (len=47) "\tstrings.ToLower(_ColorName[18:22]): ColorBlue,", + (string) (len=47) "\t_ColorName[22:26]: ColorGrey,", + (string) (len=47) "\tstrings.ToLower(_ColorName[22:26]): ColorGrey,", + (string) (len=49) "\t_ColorName[26:32]: ColorYellow,", + (string) (len=49) "\tstrings.ToLower(_ColorName[26:32]): ColorYellow,", (string) (len=1) "}", (string) "", (string) (len=53) "// ParseColor attempts to convert a string to a Color", @@ -521,13 +521,13 @@ (string) (len=1) "}", (string) "", (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", - (string) (len=32) "\t0: _ColorWithCommentName[0:5],", - (string) (len=33) "\t1: _ColorWithCommentName[5:10],", - (string) (len=34) "\t2: _ColorWithCommentName[10:13],", - (string) (len=34) "\t3: _ColorWithCommentName[13:18],", - (string) (len=34) "\t33: _ColorWithCommentName[18:22],", - (string) (len=34) "\t34: _ColorWithCommentName[22:26],", - (string) (len=34) "\t35: _ColorWithCommentName[26:32],", + (string) (len=52) "\tColorWithCommentBlack: _ColorWithCommentName[0:5],", + (string) (len=53) "\tColorWithCommentWhite: _ColorWithCommentName[5:10],", + (string) (len=54) "\tColorWithCommentRed: _ColorWithCommentName[10:13],", + (string) (len=54) "\tColorWithCommentGreen: _ColorWithCommentName[13:18],", + (string) (len=54) "\tColorWithCommentBlue: _ColorWithCommentName[18:22],", + (string) (len=54) "\tColorWithCommentGrey: _ColorWithCommentName[22:26],", + (string) (len=54) "\tColorWithCommentYellow: _ColorWithCommentName[26:32],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -539,20 +539,20 @@ (string) (len=1) "}", (string) "", (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", - (string) (len=50) "\t_ColorWithCommentName[0:5]: 0,", - (string) (len=50) "\tstrings.ToLower(_ColorWithCommentName[0:5]): 0,", - (string) (len=50) "\t_ColorWithCommentName[5:10]: 1,", - (string) (len=50) "\tstrings.ToLower(_ColorWithCommentName[5:10]): 1,", - (string) (len=50) "\t_ColorWithCommentName[10:13]: 2,", - (string) (len=50) "\tstrings.ToLower(_ColorWithCommentName[10:13]): 2,", - (string) (len=50) "\t_ColorWithCommentName[13:18]: 3,", - (string) (len=50) "\tstrings.ToLower(_ColorWithCommentName[13:18]): 3,", - (string) (len=51) "\t_ColorWithCommentName[18:22]: 33,", - (string) (len=51) "\tstrings.ToLower(_ColorWithCommentName[18:22]): 33,", - (string) (len=51) "\t_ColorWithCommentName[22:26]: 34,", - (string) (len=51) "\tstrings.ToLower(_ColorWithCommentName[22:26]): 34,", - (string) (len=51) "\t_ColorWithCommentName[26:32]: 35,", - (string) (len=51) "\tstrings.ToLower(_ColorWithCommentName[26:32]): 35,", + (string) (len=70) "\t_ColorWithCommentName[0:5]: ColorWithCommentBlack,", + (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[0:5]): ColorWithCommentBlack,", + (string) (len=70) "\t_ColorWithCommentName[5:10]: ColorWithCommentWhite,", + (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[5:10]): ColorWithCommentWhite,", + (string) (len=68) "\t_ColorWithCommentName[10:13]: ColorWithCommentRed,", + (string) (len=68) "\tstrings.ToLower(_ColorWithCommentName[10:13]): ColorWithCommentRed,", + (string) (len=70) "\t_ColorWithCommentName[13:18]: ColorWithCommentGreen,", + (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[13:18]): ColorWithCommentGreen,", + (string) (len=69) "\t_ColorWithCommentName[18:22]: ColorWithCommentBlue,", + (string) (len=69) "\tstrings.ToLower(_ColorWithCommentName[18:22]): ColorWithCommentBlue,", + (string) (len=69) "\t_ColorWithCommentName[22:26]: ColorWithCommentGrey,", + (string) (len=69) "\tstrings.ToLower(_ColorWithCommentName[22:26]): ColorWithCommentGrey,", + (string) (len=71) "\t_ColorWithCommentName[26:32]: ColorWithCommentYellow,", + (string) (len=71) "\tstrings.ToLower(_ColorWithCommentName[26:32]): ColorWithCommentYellow,", (string) (len=1) "}", (string) "", (string) (len=75) "// ParseColorWithComment attempts to convert a string to a ColorWithComment", @@ -694,13 +694,13 @@ (string) (len=1) "}", (string) "", (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", - (string) (len=33) "\t0: _ColorWithComment2Name[0:5],", - (string) (len=34) "\t1: _ColorWithComment2Name[5:10],", - (string) (len=35) "\t2: _ColorWithComment2Name[10:13],", - (string) (len=35) "\t3: _ColorWithComment2Name[13:18],", - (string) (len=35) "\t33: _ColorWithComment2Name[18:22],", - (string) (len=35) "\t34: _ColorWithComment2Name[22:26],", - (string) (len=35) "\t35: _ColorWithComment2Name[26:32],", + (string) (len=54) "\tColorWithComment2Black: _ColorWithComment2Name[0:5],", + (string) (len=55) "\tColorWithComment2White: _ColorWithComment2Name[5:10],", + (string) (len=56) "\tColorWithComment2Red: _ColorWithComment2Name[10:13],", + (string) (len=56) "\tColorWithComment2Green: _ColorWithComment2Name[13:18],", + (string) (len=56) "\tColorWithComment2Blue: _ColorWithComment2Name[18:22],", + (string) (len=56) "\tColorWithComment2Grey: _ColorWithComment2Name[22:26],", + (string) (len=56) "\tColorWithComment2Yellow: _ColorWithComment2Name[26:32],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -712,20 +712,20 @@ (string) (len=1) "}", (string) "", (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", - (string) (len=51) "\t_ColorWithComment2Name[0:5]: 0,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): 0,", - (string) (len=51) "\t_ColorWithComment2Name[5:10]: 1,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment2Name[5:10]): 1,", - (string) (len=51) "\t_ColorWithComment2Name[10:13]: 2,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment2Name[10:13]): 2,", - (string) (len=51) "\t_ColorWithComment2Name[13:18]: 3,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment2Name[13:18]): 3,", - (string) (len=52) "\t_ColorWithComment2Name[18:22]: 33,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment2Name[18:22]): 33,", - (string) (len=52) "\t_ColorWithComment2Name[22:26]: 34,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment2Name[22:26]): 34,", - (string) (len=52) "\t_ColorWithComment2Name[26:32]: 35,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): 35,", + (string) (len=72) "\t_ColorWithComment2Name[0:5]: ColorWithComment2Black,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): ColorWithComment2Black,", + (string) (len=72) "\t_ColorWithComment2Name[5:10]: ColorWithComment2White,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[5:10]): ColorWithComment2White,", + (string) (len=70) "\t_ColorWithComment2Name[10:13]: ColorWithComment2Red,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment2Name[10:13]): ColorWithComment2Red,", + (string) (len=72) "\t_ColorWithComment2Name[13:18]: ColorWithComment2Green,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[13:18]): ColorWithComment2Green,", + (string) (len=71) "\t_ColorWithComment2Name[18:22]: ColorWithComment2Blue,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment2Name[18:22]): ColorWithComment2Blue,", + (string) (len=71) "\t_ColorWithComment2Name[22:26]: ColorWithComment2Grey,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment2Name[22:26]): ColorWithComment2Grey,", + (string) (len=73) "\t_ColorWithComment2Name[26:32]: ColorWithComment2Yellow,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): ColorWithComment2Yellow,", (string) (len=1) "}", (string) "", (string) (len=77) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2", @@ -877,16 +877,16 @@ (string) (len=1) "}", (string) "", (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", - (string) (len=33) "\t0: _ColorWithComment3Name[0:5],", - (string) (len=34) "\t1: _ColorWithComment3Name[5:10],", - (string) (len=35) "\t2: _ColorWithComment3Name[10:13],", - (string) (len=35) "\t33: _ColorWithComment3Name[13:18],", - (string) (len=35) "\t34: _ColorWithComment3Name[18:22],", - (string) (len=35) "\t35: _ColorWithComment3Name[22:26],", - (string) (len=35) "\t36: _ColorWithComment3Name[26:32],", - (string) (len=35) "\t37: _ColorWithComment3Name[32:42],", - (string) (len=35) "\t38: _ColorWithComment3Name[42:52],", - (string) (len=35) "\t39: _ColorWithComment3Name[52:67],", + (string) (len=61) "\tColorWithComment3Black: _ColorWithComment3Name[0:5],", + (string) (len=62) "\tColorWithComment3White: _ColorWithComment3Name[5:10],", + (string) (len=63) "\tColorWithComment3Red: _ColorWithComment3Name[10:13],", + (string) (len=63) "\tColorWithComment3Green: _ColorWithComment3Name[13:18],", + (string) (len=63) "\tColorWithComment3Blue: _ColorWithComment3Name[18:22],", + (string) (len=63) "\tColorWithComment3Grey: _ColorWithComment3Name[22:26],", + (string) (len=63) "\tColorWithComment3Yellow: _ColorWithComment3Name[26:32],", + (string) (len=63) "\tColorWithComment3BlueGreen: _ColorWithComment3Name[32:42],", + (string) (len=63) "\tColorWithComment3RedOrange: _ColorWithComment3Name[42:52],", + (string) (len=63) "\tColorWithComment3RedOrangeBlue: _ColorWithComment3Name[52:67],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -898,26 +898,26 @@ (string) (len=1) "}", (string) "", (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", - (string) (len=51) "\t_ColorWithComment3Name[0:5]: 0,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): 0,", - (string) (len=51) "\t_ColorWithComment3Name[5:10]: 1,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment3Name[5:10]): 1,", - (string) (len=51) "\t_ColorWithComment3Name[10:13]: 2,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment3Name[10:13]): 2,", - (string) (len=52) "\t_ColorWithComment3Name[13:18]: 33,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[13:18]): 33,", - (string) (len=52) "\t_ColorWithComment3Name[18:22]: 34,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[18:22]): 34,", - (string) (len=52) "\t_ColorWithComment3Name[22:26]: 35,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[22:26]): 35,", - (string) (len=52) "\t_ColorWithComment3Name[26:32]: 36,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[26:32]): 36,", - (string) (len=52) "\t_ColorWithComment3Name[32:42]: 37,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[32:42]): 37,", - (string) (len=52) "\t_ColorWithComment3Name[42:52]: 38,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[42:52]): 38,", - (string) (len=52) "\t_ColorWithComment3Name[52:67]: 39,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): 39,", + (string) (len=72) "\t_ColorWithComment3Name[0:5]: ColorWithComment3Black,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): ColorWithComment3Black,", + (string) (len=72) "\t_ColorWithComment3Name[5:10]: ColorWithComment3White,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[5:10]): ColorWithComment3White,", + (string) (len=70) "\t_ColorWithComment3Name[10:13]: ColorWithComment3Red,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment3Name[10:13]): ColorWithComment3Red,", + (string) (len=72) "\t_ColorWithComment3Name[13:18]: ColorWithComment3Green,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[13:18]): ColorWithComment3Green,", + (string) (len=71) "\t_ColorWithComment3Name[18:22]: ColorWithComment3Blue,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment3Name[18:22]): ColorWithComment3Blue,", + (string) (len=71) "\t_ColorWithComment3Name[22:26]: ColorWithComment3Grey,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment3Name[22:26]): ColorWithComment3Grey,", + (string) (len=73) "\t_ColorWithComment3Name[26:32]: ColorWithComment3Yellow,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment3Name[26:32]): ColorWithComment3Yellow,", + (string) (len=76) "\t_ColorWithComment3Name[32:42]: ColorWithComment3BlueGreen,", + (string) (len=76) "\tstrings.ToLower(_ColorWithComment3Name[32:42]): ColorWithComment3BlueGreen,", + (string) (len=76) "\t_ColorWithComment3Name[42:52]: ColorWithComment3RedOrange,", + (string) (len=76) "\tstrings.ToLower(_ColorWithComment3Name[42:52]): ColorWithComment3RedOrange,", + (string) (len=80) "\t_ColorWithComment3Name[52:67]: ColorWithComment3RedOrangeBlue,", + (string) (len=80) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): ColorWithComment3RedOrangeBlue,", (string) (len=1) "}", (string) "", (string) (len=77) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3", @@ -1071,15 +1071,15 @@ (string) (len=1) "}", (string) "", (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", - (string) (len=33) "\t1: _ColorWithComment4Name[0:5],", - (string) (len=34) "\t2: _ColorWithComment4Name[5:10],", - (string) (len=35) "\t3: _ColorWithComment4Name[10:13],", - (string) (len=35) "\t33: _ColorWithComment4Name[13:18],", - (string) (len=35) "\t34: _ColorWithComment4Name[18:22],", - (string) (len=35) "\t35: _ColorWithComment4Name[22:26],", - (string) (len=35) "\t36: _ColorWithComment4Name[26:32],", - (string) (len=35) "\t37: _ColorWithComment4Name[32:42],", - (string) (len=35) "\t38: _ColorWithComment4Name[42:52],", + (string) (len=57) "\tColorWithComment4Black: _ColorWithComment4Name[0:5],", + (string) (len=58) "\tColorWithComment4White: _ColorWithComment4Name[5:10],", + (string) (len=59) "\tColorWithComment4Red: _ColorWithComment4Name[10:13],", + (string) (len=59) "\tColorWithComment4Green: _ColorWithComment4Name[13:18],", + (string) (len=59) "\tColorWithComment4Blue: _ColorWithComment4Name[18:22],", + (string) (len=59) "\tColorWithComment4Grey: _ColorWithComment4Name[22:26],", + (string) (len=59) "\tColorWithComment4Yellow: _ColorWithComment4Name[26:32],", + (string) (len=59) "\tColorWithComment4BlueGreen: _ColorWithComment4Name[32:42],", + (string) (len=59) "\tColorWithComment4RedOrange: _ColorWithComment4Name[42:52],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -1091,24 +1091,24 @@ (string) (len=1) "}", (string) "", (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", - (string) (len=51) "\t_ColorWithComment4Name[0:5]: 1,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): 1,", - (string) (len=51) "\t_ColorWithComment4Name[5:10]: 2,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment4Name[5:10]): 2,", - (string) (len=51) "\t_ColorWithComment4Name[10:13]: 3,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment4Name[10:13]): 3,", - (string) (len=52) "\t_ColorWithComment4Name[13:18]: 33,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[13:18]): 33,", - (string) (len=52) "\t_ColorWithComment4Name[18:22]: 34,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[18:22]): 34,", - (string) (len=52) "\t_ColorWithComment4Name[22:26]: 35,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[22:26]): 35,", - (string) (len=52) "\t_ColorWithComment4Name[26:32]: 36,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[26:32]): 36,", - (string) (len=52) "\t_ColorWithComment4Name[32:42]: 37,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[32:42]): 37,", - (string) (len=52) "\t_ColorWithComment4Name[42:52]: 38,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): 38,", + (string) (len=72) "\t_ColorWithComment4Name[0:5]: ColorWithComment4Black,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): ColorWithComment4Black,", + (string) (len=72) "\t_ColorWithComment4Name[5:10]: ColorWithComment4White,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[5:10]): ColorWithComment4White,", + (string) (len=70) "\t_ColorWithComment4Name[10:13]: ColorWithComment4Red,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment4Name[10:13]): ColorWithComment4Red,", + (string) (len=72) "\t_ColorWithComment4Name[13:18]: ColorWithComment4Green,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[13:18]): ColorWithComment4Green,", + (string) (len=71) "\t_ColorWithComment4Name[18:22]: ColorWithComment4Blue,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment4Name[18:22]): ColorWithComment4Blue,", + (string) (len=71) "\t_ColorWithComment4Name[22:26]: ColorWithComment4Grey,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment4Name[22:26]): ColorWithComment4Grey,", + (string) (len=73) "\t_ColorWithComment4Name[26:32]: ColorWithComment4Yellow,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment4Name[26:32]): ColorWithComment4Yellow,", + (string) (len=76) "\t_ColorWithComment4Name[32:42]: ColorWithComment4BlueGreen,", + (string) (len=76) "\tstrings.ToLower(_ColorWithComment4Name[32:42]): ColorWithComment4BlueGreen,", + (string) (len=76) "\t_ColorWithComment4Name[42:52]: ColorWithComment4RedOrange,", + (string) (len=76) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): ColorWithComment4RedOrange,", (string) (len=1) "}", (string) "", (string) (len=77) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4", @@ -1241,9 +1241,9 @@ (string) (len=1) "}", (string) "", (string) (len=33) "var _ModelMap = map[Model]string{", - (string) (len=20) "\t0: _ModelName[0:6],", - (string) (len=21) "\t2: _ModelName[6:11],", - (string) (len=22) "\t4: _ModelName[11:15],", + (string) (len=30) "\tModelToyota: _ModelName[0:6],", + (string) (len=31) "\tModelChevy: _ModelName[6:11],", + (string) (len=32) "\tModelFord: _ModelName[11:15],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -1255,12 +1255,12 @@ (string) (len=1) "}", (string) "", (string) (len=35) "var _ModelValue = map[string]Model{", - (string) (len=39) "\t_ModelName[0:6]: 0,", - (string) (len=39) "\tstrings.ToLower(_ModelName[0:6]): 0,", - (string) (len=39) "\t_ModelName[6:11]: 2,", - (string) (len=39) "\tstrings.ToLower(_ModelName[6:11]): 2,", - (string) (len=39) "\t_ModelName[11:15]: 4,", - (string) (len=39) "\tstrings.ToLower(_ModelName[11:15]): 4,", + (string) (len=49) "\t_ModelName[0:6]: ModelToyota,", + (string) (len=49) "\tstrings.ToLower(_ModelName[0:6]): ModelToyota,", + (string) (len=48) "\t_ModelName[6:11]: ModelChevy,", + (string) (len=48) "\tstrings.ToLower(_ModelName[6:11]): ModelChevy,", + (string) (len=47) "\t_ModelName[11:15]: ModelFord,", + (string) (len=47) "\tstrings.ToLower(_ModelName[11:15]): ModelFord,", (string) (len=1) "}", (string) "", (string) (len=53) "// ParseModel attempts to convert a string to a Model", @@ -1401,13 +1401,13 @@ (string) (len=1) "}", (string) "", (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", - (string) (len=26) "\t0: _SanitizingName[0:11],", - (string) (len=27) "\t1: _SanitizingName[11:23],", - (string) (len=27) "\t2: _SanitizingName[23:39],", - (string) (len=27) "\t3: _SanitizingName[39:51],", - (string) (len=27) "\t4: _SanitizingName[51:61],", - (string) (len=27) "\t5: _SanitizingName[61:72],", - (string) (len=27) "\t6: _SanitizingName[72:86],", + (string) (len=51) "\tSanitizingTestHyphen: _SanitizingName[0:11],", + (string) (len=52) "\tSanitizingHyphenStart: _SanitizingName[11:23],", + (string) (len=52) "\tSanitizing_underscoreFirst: _SanitizingName[23:39],", + (string) (len=52) "\tSanitizing0numberFirst: _SanitizingName[39:51],", + (string) (len=52) "\tSanitizing123456789a: _SanitizingName[51:61],", + (string) (len=52) "\tSanitizing123123Asdf: _SanitizingName[61:72],", + (string) (len=52) "\tSanitizingEndingHyphen: _SanitizingName[72:86],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -1419,20 +1419,20 @@ (string) (len=1) "}", (string) "", (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", - (string) (len=44) "\t_SanitizingName[0:11]: 0,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[0:11]): 0,", - (string) (len=44) "\t_SanitizingName[11:23]: 1,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[11:23]): 1,", - (string) (len=44) "\t_SanitizingName[23:39]: 2,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[23:39]): 2,", - (string) (len=44) "\t_SanitizingName[39:51]: 3,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[39:51]): 3,", - (string) (len=44) "\t_SanitizingName[51:61]: 4,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[51:61]): 4,", - (string) (len=44) "\t_SanitizingName[61:72]: 5,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[61:72]): 5,", - (string) (len=44) "\t_SanitizingName[72:86]: 6,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[72:86]): 6,", + (string) (len=63) "\t_SanitizingName[0:11]: SanitizingTestHyphen,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[0:11]): SanitizingTestHyphen,", + (string) (len=64) "\t_SanitizingName[11:23]: SanitizingHyphenStart,", + (string) (len=64) "\tstrings.ToLower(_SanitizingName[11:23]): SanitizingHyphenStart,", + (string) (len=69) "\t_SanitizingName[23:39]: Sanitizing_underscoreFirst,", + (string) (len=69) "\tstrings.ToLower(_SanitizingName[23:39]): Sanitizing_underscoreFirst,", + (string) (len=65) "\t_SanitizingName[39:51]: Sanitizing0numberFirst,", + (string) (len=65) "\tstrings.ToLower(_SanitizingName[39:51]): Sanitizing0numberFirst,", + (string) (len=63) "\t_SanitizingName[51:61]: Sanitizing123456789a,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[51:61]): Sanitizing123456789a,", + (string) (len=63) "\t_SanitizingName[61:72]: Sanitizing123123Asdf,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[61:72]): Sanitizing123123Asdf,", + (string) (len=65) "\t_SanitizingName[72:86]: SanitizingEndingHyphen,", + (string) (len=65) "\tstrings.ToLower(_SanitizingName[72:86]): SanitizingEndingHyphen,", (string) (len=1) "}", (string) "", (string) (len=63) "// ParseSanitizing attempts to convert a string to a Sanitizing", @@ -1561,9 +1561,9 @@ (string) (len=1) "}", (string) "", (string) (len=31) "var _SodaMap = map[Soda]string{", - (string) (len=19) "\t0: _SodaName[0:4],", - (string) (len=19) "\t1: _SodaName[4:9],", - (string) (len=20) "\t2: _SodaName[9:15],", + (string) (len=28) "\tSodaCoke: _SodaName[0:4],", + (string) (len=28) "\tSodaPepsi: _SodaName[4:9],", + (string) (len=29) "\tSodaMtnDew: _SodaName[9:15],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -1575,12 +1575,12 @@ (string) (len=1) "}", (string) "", (string) (len=33) "var _SodaValue = map[string]Soda{", - (string) (len=37) "\t_SodaName[0:4]: 0,", - (string) (len=37) "\tstrings.ToLower(_SodaName[0:4]): 0,", - (string) (len=37) "\t_SodaName[4:9]: 1,", - (string) (len=37) "\tstrings.ToLower(_SodaName[4:9]): 1,", - (string) (len=37) "\t_SodaName[9:15]: 2,", - (string) (len=37) "\tstrings.ToLower(_SodaName[9:15]): 2,", + (string) (len=44) "\t_SodaName[0:4]: SodaCoke,", + (string) (len=44) "\tstrings.ToLower(_SodaName[0:4]): SodaCoke,", + (string) (len=45) "\t_SodaName[4:9]: SodaPepsi,", + (string) (len=45) "\tstrings.ToLower(_SodaName[4:9]): SodaPepsi,", + (string) (len=46) "\t_SodaName[9:15]: SodaMtnDew,", + (string) (len=46) "\tstrings.ToLower(_SodaName[9:15]): SodaMtnDew,", (string) (len=1) "}", (string) "", (string) (len=51) "// ParseSoda attempts to convert a string to a Soda", @@ -1706,8 +1706,8 @@ (string) (len=1) "}", (string) "", (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", - (string) (len=29) "\t23: _StartNotZeroName[0:12],", - (string) (len=30) "\t24: _StartNotZeroName[12:19],", + (string) (len=51) "\tStartNotZeroStartWithNum: _StartNotZeroName[0:12],", + (string) (len=52) "\tStartNotZeroNextNum: _StartNotZeroName[12:19],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -1719,10 +1719,10 @@ (string) (len=1) "}", (string) "", (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", - (string) (len=47) "\t_StartNotZeroName[0:12]: 23,", - (string) (len=47) "\tstrings.ToLower(_StartNotZeroName[0:12]): 23,", - (string) (len=47) "\t_StartNotZeroName[12:19]: 24,", - (string) (len=47) "\tstrings.ToLower(_StartNotZeroName[12:19]): 24,", + (string) (len=69) "\t_StartNotZeroName[0:12]: StartNotZeroStartWithNum,", + (string) (len=69) "\tstrings.ToLower(_StartNotZeroName[0:12]): StartNotZeroStartWithNum,", + (string) (len=64) "\t_StartNotZeroName[12:19]: StartNotZeroNextNum,", + (string) (len=64) "\tstrings.ToLower(_StartNotZeroName[12:19]): StartNotZeroNextNum,", (string) (len=1) "}", (string) "", (string) (len=67) "// ParseStartNotZero attempts to convert a string to a StartNotZero", diff --git a/generator/.snapshots/generator-TestNoPrefixExampleFile b/generator/.snapshots/generator-TestNoPrefixExampleFile index 829de7d8..7edbe7fc 100644 --- a/generator/.snapshots/generator-TestNoPrefixExampleFile +++ b/generator/.snapshots/generator-TestNoPrefixExampleFile @@ -24,9 +24,9 @@ (string) (len=32) "const _AnimalName = \"CatDogFish\"", (string) "", (string) (len=35) "var _AnimalMap = map[Animal]string{", - (string) (len=21) "\t0: _AnimalName[0:3],", - (string) (len=21) "\t1: _AnimalName[3:6],", - (string) (len=22) "\t2: _AnimalName[6:10],", + (string) (len=24) "\tCat: _AnimalName[0:3],", + (string) (len=24) "\tDog: _AnimalName[3:6],", + (string) (len=25) "\tFish: _AnimalName[6:10],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -38,12 +38,12 @@ (string) (len=1) "}", (string) "", (string) (len=37) "var _AnimalValue = map[string]Animal{", - (string) (len=39) "\t_AnimalName[0:3]: 0,", - (string) (len=39) "\tstrings.ToLower(_AnimalName[0:3]): 0,", - (string) (len=39) "\t_AnimalName[3:6]: 1,", - (string) (len=39) "\tstrings.ToLower(_AnimalName[3:6]): 1,", - (string) (len=39) "\t_AnimalName[6:10]: 2,", - (string) (len=39) "\tstrings.ToLower(_AnimalName[6:10]): 2,", + (string) (len=41) "\t_AnimalName[0:3]: Cat,", + (string) (len=41) "\tstrings.ToLower(_AnimalName[0:3]): Cat,", + (string) (len=41) "\t_AnimalName[3:6]: Dog,", + (string) (len=41) "\tstrings.ToLower(_AnimalName[3:6]): Dog,", + (string) (len=42) "\t_AnimalName[6:10]: Fish,", + (string) (len=42) "\tstrings.ToLower(_AnimalName[6:10]): Fish,", (string) (len=1) "}", (string) "", (string) (len=55) "// ParseAnimal attempts to convert a string to a Animal", @@ -99,9 +99,9 @@ (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", (string) "", (string) (len=33) "var _CasesMap = map[Cases]string{", - (string) (len=21) "\t0: _CasesName[0:10],", - (string) (len=22) "\t1: _CasesName[10:22],", - (string) (len=22) "\t2: _CasesName[22:43],", + (string) (len=41) "\tTest_lower: _CasesName[0:10],", + (string) (len=42) "\tTest_capital: _CasesName[10:22],", + (string) (len=42) "\tAnotherLowerCaseStart: _CasesName[22:43],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -113,12 +113,12 @@ (string) (len=1) "}", (string) "", (string) (len=35) "var _CasesValue = map[string]Cases{", - (string) (len=39) "\t_CasesName[0:10]: 0,", - (string) (len=39) "\tstrings.ToLower(_CasesName[0:10]): 0,", - (string) (len=39) "\t_CasesName[10:22]: 1,", - (string) (len=39) "\tstrings.ToLower(_CasesName[10:22]): 1,", - (string) (len=39) "\t_CasesName[22:43]: 2,", - (string) (len=39) "\tstrings.ToLower(_CasesName[22:43]): 2,", + (string) (len=48) "\t_CasesName[0:10]: Test_lower,", + (string) (len=48) "\tstrings.ToLower(_CasesName[0:10]): Test_lower,", + (string) (len=50) "\t_CasesName[10:22]: Test_capital,", + (string) (len=50) "\tstrings.ToLower(_CasesName[10:22]): Test_capital,", + (string) (len=59) "\t_CasesName[22:43]: AnotherLowerCaseStart,", + (string) (len=59) "\tstrings.ToLower(_CasesName[22:43]): AnotherLowerCaseStart,", (string) (len=1) "}", (string) "", (string) (len=53) "// ParseCases attempts to convert a string to a Cases", @@ -182,13 +182,13 @@ (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=33) "var _ColorMap = map[Color]string{", - (string) (len=21) "\t0: _ColorName[0:5],", - (string) (len=22) "\t1: _ColorName[5:10],", - (string) (len=23) "\t2: _ColorName[10:13],", - (string) (len=23) "\t3: _ColorName[13:18],", - (string) (len=23) "\t33: _ColorName[18:22],", - (string) (len=23) "\t34: _ColorName[22:26],", - (string) (len=23) "\t35: _ColorName[26:32],", + (string) (len=25) "\tBlack: _ColorName[0:5],", + (string) (len=26) "\tWhite: _ColorName[5:10],", + (string) (len=27) "\tRed: _ColorName[10:13],", + (string) (len=27) "\tGreen: _ColorName[13:18],", + (string) (len=27) "\tBlue: _ColorName[18:22],", + (string) (len=27) "\tGrey: _ColorName[22:26],", + (string) (len=27) "\tYellow: _ColorName[26:32],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -200,20 +200,20 @@ (string) (len=1) "}", (string) "", (string) (len=35) "var _ColorValue = map[string]Color{", - (string) (len=39) "\t_ColorName[0:5]: 0,", - (string) (len=39) "\tstrings.ToLower(_ColorName[0:5]): 0,", - (string) (len=39) "\t_ColorName[5:10]: 1,", - (string) (len=39) "\tstrings.ToLower(_ColorName[5:10]): 1,", - (string) (len=39) "\t_ColorName[10:13]: 2,", - (string) (len=39) "\tstrings.ToLower(_ColorName[10:13]): 2,", - (string) (len=39) "\t_ColorName[13:18]: 3,", - (string) (len=39) "\tstrings.ToLower(_ColorName[13:18]): 3,", - (string) (len=40) "\t_ColorName[18:22]: 33,", - (string) (len=40) "\tstrings.ToLower(_ColorName[18:22]): 33,", - (string) (len=40) "\t_ColorName[22:26]: 34,", - (string) (len=40) "\tstrings.ToLower(_ColorName[22:26]): 34,", - (string) (len=40) "\t_ColorName[26:32]: 35,", - (string) (len=40) "\tstrings.ToLower(_ColorName[26:32]): 35,", + (string) (len=43) "\t_ColorName[0:5]: Black,", + (string) (len=43) "\tstrings.ToLower(_ColorName[0:5]): Black,", + (string) (len=43) "\t_ColorName[5:10]: White,", + (string) (len=43) "\tstrings.ToLower(_ColorName[5:10]): White,", + (string) (len=41) "\t_ColorName[10:13]: Red,", + (string) (len=41) "\tstrings.ToLower(_ColorName[10:13]): Red,", + (string) (len=43) "\t_ColorName[13:18]: Green,", + (string) (len=43) "\tstrings.ToLower(_ColorName[13:18]): Green,", + (string) (len=42) "\t_ColorName[18:22]: Blue,", + (string) (len=42) "\tstrings.ToLower(_ColorName[18:22]): Blue,", + (string) (len=42) "\t_ColorName[22:26]: Grey,", + (string) (len=42) "\tstrings.ToLower(_ColorName[22:26]): Grey,", + (string) (len=44) "\t_ColorName[26:32]: Yellow,", + (string) (len=44) "\tstrings.ToLower(_ColorName[26:32]): Yellow,", (string) (len=1) "}", (string) "", (string) (len=53) "// ParseColor attempts to convert a string to a Color", @@ -278,13 +278,13 @@ (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", - (string) (len=32) "\t0: _ColorWithCommentName[0:5],", - (string) (len=33) "\t1: _ColorWithCommentName[5:10],", - (string) (len=34) "\t2: _ColorWithCommentName[10:13],", - (string) (len=34) "\t3: _ColorWithCommentName[13:18],", - (string) (len=34) "\t33: _ColorWithCommentName[18:22],", - (string) (len=34) "\t34: _ColorWithCommentName[22:26],", - (string) (len=34) "\t35: _ColorWithCommentName[26:32],", + (string) (len=36) "\tBlack: _ColorWithCommentName[0:5],", + (string) (len=37) "\tWhite: _ColorWithCommentName[5:10],", + (string) (len=38) "\tRed: _ColorWithCommentName[10:13],", + (string) (len=38) "\tGreen: _ColorWithCommentName[13:18],", + (string) (len=38) "\tBlue: _ColorWithCommentName[18:22],", + (string) (len=38) "\tGrey: _ColorWithCommentName[22:26],", + (string) (len=38) "\tYellow: _ColorWithCommentName[26:32],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -296,20 +296,20 @@ (string) (len=1) "}", (string) "", (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", - (string) (len=50) "\t_ColorWithCommentName[0:5]: 0,", - (string) (len=50) "\tstrings.ToLower(_ColorWithCommentName[0:5]): 0,", - (string) (len=50) "\t_ColorWithCommentName[5:10]: 1,", - (string) (len=50) "\tstrings.ToLower(_ColorWithCommentName[5:10]): 1,", - (string) (len=50) "\t_ColorWithCommentName[10:13]: 2,", - (string) (len=50) "\tstrings.ToLower(_ColorWithCommentName[10:13]): 2,", - (string) (len=50) "\t_ColorWithCommentName[13:18]: 3,", - (string) (len=50) "\tstrings.ToLower(_ColorWithCommentName[13:18]): 3,", - (string) (len=51) "\t_ColorWithCommentName[18:22]: 33,", - (string) (len=51) "\tstrings.ToLower(_ColorWithCommentName[18:22]): 33,", - (string) (len=51) "\t_ColorWithCommentName[22:26]: 34,", - (string) (len=51) "\tstrings.ToLower(_ColorWithCommentName[22:26]): 34,", - (string) (len=51) "\t_ColorWithCommentName[26:32]: 35,", - (string) (len=51) "\tstrings.ToLower(_ColorWithCommentName[26:32]): 35,", + (string) (len=54) "\t_ColorWithCommentName[0:5]: Black,", + (string) (len=54) "\tstrings.ToLower(_ColorWithCommentName[0:5]): Black,", + (string) (len=54) "\t_ColorWithCommentName[5:10]: White,", + (string) (len=54) "\tstrings.ToLower(_ColorWithCommentName[5:10]): White,", + (string) (len=52) "\t_ColorWithCommentName[10:13]: Red,", + (string) (len=52) "\tstrings.ToLower(_ColorWithCommentName[10:13]): Red,", + (string) (len=54) "\t_ColorWithCommentName[13:18]: Green,", + (string) (len=54) "\tstrings.ToLower(_ColorWithCommentName[13:18]): Green,", + (string) (len=53) "\t_ColorWithCommentName[18:22]: Blue,", + (string) (len=53) "\tstrings.ToLower(_ColorWithCommentName[18:22]): Blue,", + (string) (len=53) "\t_ColorWithCommentName[22:26]: Grey,", + (string) (len=53) "\tstrings.ToLower(_ColorWithCommentName[22:26]): Grey,", + (string) (len=55) "\t_ColorWithCommentName[26:32]: Yellow,", + (string) (len=55) "\tstrings.ToLower(_ColorWithCommentName[26:32]): Yellow,", (string) (len=1) "}", (string) "", (string) (len=75) "// ParseColorWithComment attempts to convert a string to a ColorWithComment", @@ -374,13 +374,13 @@ (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", - (string) (len=33) "\t0: _ColorWithComment2Name[0:5],", - (string) (len=34) "\t1: _ColorWithComment2Name[5:10],", - (string) (len=35) "\t2: _ColorWithComment2Name[10:13],", - (string) (len=35) "\t3: _ColorWithComment2Name[13:18],", - (string) (len=35) "\t33: _ColorWithComment2Name[18:22],", - (string) (len=35) "\t34: _ColorWithComment2Name[22:26],", - (string) (len=35) "\t35: _ColorWithComment2Name[26:32],", + (string) (len=37) "\tBlack: _ColorWithComment2Name[0:5],", + (string) (len=38) "\tWhite: _ColorWithComment2Name[5:10],", + (string) (len=39) "\tRed: _ColorWithComment2Name[10:13],", + (string) (len=39) "\tGreen: _ColorWithComment2Name[13:18],", + (string) (len=39) "\tBlue: _ColorWithComment2Name[18:22],", + (string) (len=39) "\tGrey: _ColorWithComment2Name[22:26],", + (string) (len=39) "\tYellow: _ColorWithComment2Name[26:32],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -392,20 +392,20 @@ (string) (len=1) "}", (string) "", (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", - (string) (len=51) "\t_ColorWithComment2Name[0:5]: 0,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): 0,", - (string) (len=51) "\t_ColorWithComment2Name[5:10]: 1,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment2Name[5:10]): 1,", - (string) (len=51) "\t_ColorWithComment2Name[10:13]: 2,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment2Name[10:13]): 2,", - (string) (len=51) "\t_ColorWithComment2Name[13:18]: 3,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment2Name[13:18]): 3,", - (string) (len=52) "\t_ColorWithComment2Name[18:22]: 33,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment2Name[18:22]): 33,", - (string) (len=52) "\t_ColorWithComment2Name[22:26]: 34,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment2Name[22:26]): 34,", - (string) (len=52) "\t_ColorWithComment2Name[26:32]: 35,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): 35,", + (string) (len=55) "\t_ColorWithComment2Name[0:5]: Black,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): Black,", + (string) (len=55) "\t_ColorWithComment2Name[5:10]: White,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment2Name[5:10]): White,", + (string) (len=53) "\t_ColorWithComment2Name[10:13]: Red,", + (string) (len=53) "\tstrings.ToLower(_ColorWithComment2Name[10:13]): Red,", + (string) (len=55) "\t_ColorWithComment2Name[13:18]: Green,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment2Name[13:18]): Green,", + (string) (len=54) "\t_ColorWithComment2Name[18:22]: Blue,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment2Name[18:22]): Blue,", + (string) (len=54) "\t_ColorWithComment2Name[22:26]: Grey,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment2Name[22:26]): Grey,", + (string) (len=56) "\t_ColorWithComment2Name[26:32]: Yellow,", + (string) (len=56) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): Yellow,", (string) (len=1) "}", (string) "", (string) (len=77) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2", @@ -477,16 +477,16 @@ (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", (string) "", (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", - (string) (len=33) "\t0: _ColorWithComment3Name[0:5],", - (string) (len=34) "\t1: _ColorWithComment3Name[5:10],", - (string) (len=35) "\t2: _ColorWithComment3Name[10:13],", - (string) (len=35) "\t33: _ColorWithComment3Name[13:18],", - (string) (len=35) "\t34: _ColorWithComment3Name[18:22],", - (string) (len=35) "\t35: _ColorWithComment3Name[22:26],", - (string) (len=35) "\t36: _ColorWithComment3Name[26:32],", - (string) (len=35) "\t37: _ColorWithComment3Name[32:42],", - (string) (len=35) "\t38: _ColorWithComment3Name[42:52],", - (string) (len=35) "\t39: _ColorWithComment3Name[52:67],", + (string) (len=44) "\tBlack: _ColorWithComment3Name[0:5],", + (string) (len=45) "\tWhite: _ColorWithComment3Name[5:10],", + (string) (len=46) "\tRed: _ColorWithComment3Name[10:13],", + (string) (len=46) "\tGreen: _ColorWithComment3Name[13:18],", + (string) (len=46) "\tBlue: _ColorWithComment3Name[18:22],", + (string) (len=46) "\tGrey: _ColorWithComment3Name[22:26],", + (string) (len=46) "\tYellow: _ColorWithComment3Name[26:32],", + (string) (len=46) "\tBlueGreen: _ColorWithComment3Name[32:42],", + (string) (len=46) "\tRedOrange: _ColorWithComment3Name[42:52],", + (string) (len=46) "\tRedOrangeBlue: _ColorWithComment3Name[52:67],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -498,26 +498,26 @@ (string) (len=1) "}", (string) "", (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", - (string) (len=51) "\t_ColorWithComment3Name[0:5]: 0,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): 0,", - (string) (len=51) "\t_ColorWithComment3Name[5:10]: 1,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment3Name[5:10]): 1,", - (string) (len=51) "\t_ColorWithComment3Name[10:13]: 2,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment3Name[10:13]): 2,", - (string) (len=52) "\t_ColorWithComment3Name[13:18]: 33,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[13:18]): 33,", - (string) (len=52) "\t_ColorWithComment3Name[18:22]: 34,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[18:22]): 34,", - (string) (len=52) "\t_ColorWithComment3Name[22:26]: 35,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[22:26]): 35,", - (string) (len=52) "\t_ColorWithComment3Name[26:32]: 36,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[26:32]): 36,", - (string) (len=52) "\t_ColorWithComment3Name[32:42]: 37,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[32:42]): 37,", - (string) (len=52) "\t_ColorWithComment3Name[42:52]: 38,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[42:52]): 38,", - (string) (len=52) "\t_ColorWithComment3Name[52:67]: 39,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): 39,", + (string) (len=55) "\t_ColorWithComment3Name[0:5]: Black,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): Black,", + (string) (len=55) "\t_ColorWithComment3Name[5:10]: White,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment3Name[5:10]): White,", + (string) (len=53) "\t_ColorWithComment3Name[10:13]: Red,", + (string) (len=53) "\tstrings.ToLower(_ColorWithComment3Name[10:13]): Red,", + (string) (len=55) "\t_ColorWithComment3Name[13:18]: Green,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment3Name[13:18]): Green,", + (string) (len=54) "\t_ColorWithComment3Name[18:22]: Blue,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment3Name[18:22]): Blue,", + (string) (len=54) "\t_ColorWithComment3Name[22:26]: Grey,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment3Name[22:26]): Grey,", + (string) (len=56) "\t_ColorWithComment3Name[26:32]: Yellow,", + (string) (len=56) "\tstrings.ToLower(_ColorWithComment3Name[26:32]): Yellow,", + (string) (len=59) "\t_ColorWithComment3Name[32:42]: BlueGreen,", + (string) (len=59) "\tstrings.ToLower(_ColorWithComment3Name[32:42]): BlueGreen,", + (string) (len=59) "\t_ColorWithComment3Name[42:52]: RedOrange,", + (string) (len=59) "\tstrings.ToLower(_ColorWithComment3Name[42:52]): RedOrange,", + (string) (len=63) "\t_ColorWithComment3Name[52:67]: RedOrangeBlue,", + (string) (len=63) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): RedOrangeBlue,", (string) (len=1) "}", (string) "", (string) (len=77) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3", @@ -592,15 +592,15 @@ (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", (string) "", (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", - (string) (len=33) "\t1: _ColorWithComment4Name[0:5],", - (string) (len=34) "\t2: _ColorWithComment4Name[5:10],", - (string) (len=35) "\t3: _ColorWithComment4Name[10:13],", - (string) (len=35) "\t33: _ColorWithComment4Name[13:18],", - (string) (len=35) "\t34: _ColorWithComment4Name[18:22],", - (string) (len=35) "\t35: _ColorWithComment4Name[22:26],", - (string) (len=35) "\t36: _ColorWithComment4Name[26:32],", - (string) (len=35) "\t37: _ColorWithComment4Name[32:42],", - (string) (len=35) "\t38: _ColorWithComment4Name[42:52],", + (string) (len=40) "\tBlack: _ColorWithComment4Name[0:5],", + (string) (len=41) "\tWhite: _ColorWithComment4Name[5:10],", + (string) (len=42) "\tRed: _ColorWithComment4Name[10:13],", + (string) (len=42) "\tGreen: _ColorWithComment4Name[13:18],", + (string) (len=42) "\tBlue: _ColorWithComment4Name[18:22],", + (string) (len=42) "\tGrey: _ColorWithComment4Name[22:26],", + (string) (len=42) "\tYellow: _ColorWithComment4Name[26:32],", + (string) (len=42) "\tBlueGreen: _ColorWithComment4Name[32:42],", + (string) (len=42) "\tRedOrange: _ColorWithComment4Name[42:52],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -612,24 +612,24 @@ (string) (len=1) "}", (string) "", (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", - (string) (len=51) "\t_ColorWithComment4Name[0:5]: 1,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): 1,", - (string) (len=51) "\t_ColorWithComment4Name[5:10]: 2,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment4Name[5:10]): 2,", - (string) (len=51) "\t_ColorWithComment4Name[10:13]: 3,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment4Name[10:13]): 3,", - (string) (len=52) "\t_ColorWithComment4Name[13:18]: 33,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[13:18]): 33,", - (string) (len=52) "\t_ColorWithComment4Name[18:22]: 34,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[18:22]): 34,", - (string) (len=52) "\t_ColorWithComment4Name[22:26]: 35,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[22:26]): 35,", - (string) (len=52) "\t_ColorWithComment4Name[26:32]: 36,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[26:32]): 36,", - (string) (len=52) "\t_ColorWithComment4Name[32:42]: 37,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[32:42]): 37,", - (string) (len=52) "\t_ColorWithComment4Name[42:52]: 38,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): 38,", + (string) (len=55) "\t_ColorWithComment4Name[0:5]: Black,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): Black,", + (string) (len=55) "\t_ColorWithComment4Name[5:10]: White,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment4Name[5:10]): White,", + (string) (len=53) "\t_ColorWithComment4Name[10:13]: Red,", + (string) (len=53) "\tstrings.ToLower(_ColorWithComment4Name[10:13]): Red,", + (string) (len=55) "\t_ColorWithComment4Name[13:18]: Green,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment4Name[13:18]): Green,", + (string) (len=54) "\t_ColorWithComment4Name[18:22]: Blue,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment4Name[18:22]): Blue,", + (string) (len=54) "\t_ColorWithComment4Name[22:26]: Grey,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment4Name[22:26]): Grey,", + (string) (len=56) "\t_ColorWithComment4Name[26:32]: Yellow,", + (string) (len=56) "\tstrings.ToLower(_ColorWithComment4Name[26:32]): Yellow,", + (string) (len=59) "\t_ColorWithComment4Name[32:42]: BlueGreen,", + (string) (len=59) "\tstrings.ToLower(_ColorWithComment4Name[32:42]): BlueGreen,", + (string) (len=59) "\t_ColorWithComment4Name[42:52]: RedOrange,", + (string) (len=59) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): RedOrange,", (string) (len=1) "}", (string) "", (string) (len=77) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4", @@ -689,9 +689,9 @@ (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", (string) "", (string) (len=33) "var _ModelMap = map[Model]string{", - (string) (len=20) "\t0: _ModelName[0:6],", - (string) (len=21) "\t2: _ModelName[6:11],", - (string) (len=22) "\t4: _ModelName[11:15],", + (string) (len=25) "\tToyota: _ModelName[0:6],", + (string) (len=26) "\tChevy: _ModelName[6:11],", + (string) (len=27) "\tFord: _ModelName[11:15],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -703,12 +703,12 @@ (string) (len=1) "}", (string) "", (string) (len=35) "var _ModelValue = map[string]Model{", - (string) (len=39) "\t_ModelName[0:6]: 0,", - (string) (len=39) "\tstrings.ToLower(_ModelName[0:6]): 0,", - (string) (len=39) "\t_ModelName[6:11]: 2,", - (string) (len=39) "\tstrings.ToLower(_ModelName[6:11]): 2,", - (string) (len=39) "\t_ModelName[11:15]: 4,", - (string) (len=39) "\tstrings.ToLower(_ModelName[11:15]): 4,", + (string) (len=44) "\t_ModelName[0:6]: Toyota,", + (string) (len=44) "\tstrings.ToLower(_ModelName[0:6]): Toyota,", + (string) (len=43) "\t_ModelName[6:11]: Chevy,", + (string) (len=43) "\tstrings.ToLower(_ModelName[6:11]): Chevy,", + (string) (len=42) "\t_ModelName[11:15]: Ford,", + (string) (len=42) "\tstrings.ToLower(_ModelName[11:15]): Ford,", (string) (len=1) "}", (string) "", (string) (len=53) "// ParseModel attempts to convert a string to a Model", @@ -772,13 +772,13 @@ (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", (string) "", (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", - (string) (len=26) "\t0: _SanitizingName[0:11],", - (string) (len=27) "\t1: _SanitizingName[11:23],", - (string) (len=27) "\t2: _SanitizingName[23:39],", - (string) (len=27) "\t3: _SanitizingName[39:51],", - (string) (len=27) "\t4: _SanitizingName[51:61],", - (string) (len=27) "\t5: _SanitizingName[61:72],", - (string) (len=27) "\t6: _SanitizingName[72:86],", + (string) (len=42) "\tTestHyphen: _SanitizingName[0:11],", + (string) (len=43) "\tXHyphenStart: _SanitizingName[11:23],", + (string) (len=43) "\tX_underscoreFirst: _SanitizingName[23:39],", + (string) (len=43) "\tX0numberFirst: _SanitizingName[39:51],", + (string) (len=43) "\tX123456789a: _SanitizingName[51:61],", + (string) (len=43) "\tX123123Asdf: _SanitizingName[61:72],", + (string) (len=43) "\tEndingHyphen: _SanitizingName[72:86],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -790,20 +790,20 @@ (string) (len=1) "}", (string) "", (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", - (string) (len=44) "\t_SanitizingName[0:11]: 0,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[0:11]): 0,", - (string) (len=44) "\t_SanitizingName[11:23]: 1,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[11:23]): 1,", - (string) (len=44) "\t_SanitizingName[23:39]: 2,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[23:39]): 2,", - (string) (len=44) "\t_SanitizingName[39:51]: 3,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[39:51]): 3,", - (string) (len=44) "\t_SanitizingName[51:61]: 4,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[51:61]): 4,", - (string) (len=44) "\t_SanitizingName[61:72]: 5,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[61:72]): 5,", - (string) (len=44) "\t_SanitizingName[72:86]: 6,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[72:86]): 6,", + (string) (len=53) "\t_SanitizingName[0:11]: TestHyphen,", + (string) (len=53) "\tstrings.ToLower(_SanitizingName[0:11]): TestHyphen,", + (string) (len=55) "\t_SanitizingName[11:23]: XHyphenStart,", + (string) (len=55) "\tstrings.ToLower(_SanitizingName[11:23]): XHyphenStart,", + (string) (len=60) "\t_SanitizingName[23:39]: X_underscoreFirst,", + (string) (len=60) "\tstrings.ToLower(_SanitizingName[23:39]): X_underscoreFirst,", + (string) (len=56) "\t_SanitizingName[39:51]: X0numberFirst,", + (string) (len=56) "\tstrings.ToLower(_SanitizingName[39:51]): X0numberFirst,", + (string) (len=54) "\t_SanitizingName[51:61]: X123456789a,", + (string) (len=54) "\tstrings.ToLower(_SanitizingName[51:61]): X123456789a,", + (string) (len=54) "\t_SanitizingName[61:72]: X123123Asdf,", + (string) (len=54) "\tstrings.ToLower(_SanitizingName[61:72]): X123123Asdf,", + (string) (len=55) "\t_SanitizingName[72:86]: EndingHyphen,", + (string) (len=55) "\tstrings.ToLower(_SanitizingName[72:86]): EndingHyphen,", (string) (len=1) "}", (string) "", (string) (len=63) "// ParseSanitizing attempts to convert a string to a Sanitizing", @@ -859,9 +859,9 @@ (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", (string) "", (string) (len=31) "var _SodaMap = map[Soda]string{", - (string) (len=19) "\t0: _SodaName[0:4],", - (string) (len=19) "\t1: _SodaName[4:9],", - (string) (len=20) "\t2: _SodaName[9:15],", + (string) (len=24) "\tCoke: _SodaName[0:4],", + (string) (len=24) "\tPepsi: _SodaName[4:9],", + (string) (len=25) "\tMtnDew: _SodaName[9:15],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -873,12 +873,12 @@ (string) (len=1) "}", (string) "", (string) (len=33) "var _SodaValue = map[string]Soda{", - (string) (len=37) "\t_SodaName[0:4]: 0,", - (string) (len=37) "\tstrings.ToLower(_SodaName[0:4]): 0,", - (string) (len=37) "\t_SodaName[4:9]: 1,", - (string) (len=37) "\tstrings.ToLower(_SodaName[4:9]): 1,", - (string) (len=37) "\t_SodaName[9:15]: 2,", - (string) (len=37) "\tstrings.ToLower(_SodaName[9:15]): 2,", + (string) (len=40) "\t_SodaName[0:4]: Coke,", + (string) (len=40) "\tstrings.ToLower(_SodaName[0:4]): Coke,", + (string) (len=41) "\t_SodaName[4:9]: Pepsi,", + (string) (len=41) "\tstrings.ToLower(_SodaName[4:9]): Pepsi,", + (string) (len=42) "\t_SodaName[9:15]: MtnDew,", + (string) (len=42) "\tstrings.ToLower(_SodaName[9:15]): MtnDew,", (string) (len=1) "}", (string) "", (string) (len=51) "// ParseSoda attempts to convert a string to a Soda", @@ -932,8 +932,8 @@ (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", (string) "", (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", - (string) (len=29) "\t23: _StartNotZeroName[0:12],", - (string) (len=30) "\t24: _StartNotZeroName[12:19],", + (string) (len=39) "\tStartWithNum: _StartNotZeroName[0:12],", + (string) (len=40) "\tNextNum: _StartNotZeroName[12:19],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -945,10 +945,10 @@ (string) (len=1) "}", (string) "", (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", - (string) (len=47) "\t_StartNotZeroName[0:12]: 23,", - (string) (len=47) "\tstrings.ToLower(_StartNotZeroName[0:12]): 23,", - (string) (len=47) "\t_StartNotZeroName[12:19]: 24,", - (string) (len=47) "\tstrings.ToLower(_StartNotZeroName[12:19]): 24,", + (string) (len=57) "\t_StartNotZeroName[0:12]: StartWithNum,", + (string) (len=57) "\tstrings.ToLower(_StartNotZeroName[0:12]): StartWithNum,", + (string) (len=52) "\t_StartNotZeroName[12:19]: NextNum,", + (string) (len=52) "\tstrings.ToLower(_StartNotZeroName[12:19]): NextNum,", (string) (len=1) "}", (string) "", (string) (len=67) "// ParseStartNotZero attempts to convert a string to a StartNotZero", diff --git a/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel b/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel index bef86e1b..aa507325 100644 --- a/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel +++ b/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel @@ -24,9 +24,9 @@ (string) (len=32) "const _AnimalName = \"CatDogFish\"", (string) "", (string) (len=35) "var _AnimalMap = map[Animal]string{", - (string) (len=21) "\t0: _AnimalName[0:3],", - (string) (len=21) "\t1: _AnimalName[3:6],", - (string) (len=22) "\t2: _AnimalName[6:10],", + (string) (len=24) "\tCat: _AnimalName[0:3],", + (string) (len=24) "\tDog: _AnimalName[3:6],", + (string) (len=25) "\tFish: _AnimalName[6:10],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -38,12 +38,12 @@ (string) (len=1) "}", (string) "", (string) (len=37) "var _AnimalValue = map[string]Animal{", - (string) (len=39) "\t_AnimalName[0:3]: 0,", - (string) (len=39) "\tstrings.ToLower(_AnimalName[0:3]): 0,", - (string) (len=39) "\t_AnimalName[3:6]: 1,", - (string) (len=39) "\tstrings.ToLower(_AnimalName[3:6]): 1,", - (string) (len=39) "\t_AnimalName[6:10]: 2,", - (string) (len=39) "\tstrings.ToLower(_AnimalName[6:10]): 2,", + (string) (len=41) "\t_AnimalName[0:3]: Cat,", + (string) (len=41) "\tstrings.ToLower(_AnimalName[0:3]): Cat,", + (string) (len=41) "\t_AnimalName[3:6]: Dog,", + (string) (len=41) "\tstrings.ToLower(_AnimalName[3:6]): Dog,", + (string) (len=42) "\t_AnimalName[6:10]: Fish,", + (string) (len=42) "\tstrings.ToLower(_AnimalName[6:10]): Fish,", (string) (len=1) "}", (string) "", (string) (len=55) "// ParseAnimal attempts to convert a string to a Animal", @@ -99,9 +99,9 @@ (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", (string) "", (string) (len=33) "var _CasesMap = map[Cases]string{", - (string) (len=21) "\t0: _CasesName[0:10],", - (string) (len=22) "\t1: _CasesName[10:22],", - (string) (len=22) "\t2: _CasesName[22:43],", + (string) (len=41) "\tTestLower: _CasesName[0:10],", + (string) (len=42) "\tTestCapital: _CasesName[10:22],", + (string) (len=42) "\tAnotherLowerCaseStart: _CasesName[22:43],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -113,12 +113,12 @@ (string) (len=1) "}", (string) "", (string) (len=35) "var _CasesValue = map[string]Cases{", - (string) (len=39) "\t_CasesName[0:10]: 0,", - (string) (len=39) "\tstrings.ToLower(_CasesName[0:10]): 0,", - (string) (len=39) "\t_CasesName[10:22]: 1,", - (string) (len=39) "\tstrings.ToLower(_CasesName[10:22]): 1,", - (string) (len=39) "\t_CasesName[22:43]: 2,", - (string) (len=39) "\tstrings.ToLower(_CasesName[22:43]): 2,", + (string) (len=47) "\t_CasesName[0:10]: TestLower,", + (string) (len=47) "\tstrings.ToLower(_CasesName[0:10]): TestLower,", + (string) (len=49) "\t_CasesName[10:22]: TestCapital,", + (string) (len=49) "\tstrings.ToLower(_CasesName[10:22]): TestCapital,", + (string) (len=59) "\t_CasesName[22:43]: AnotherLowerCaseStart,", + (string) (len=59) "\tstrings.ToLower(_CasesName[22:43]): AnotherLowerCaseStart,", (string) (len=1) "}", (string) "", (string) (len=53) "// ParseCases attempts to convert a string to a Cases", @@ -182,13 +182,13 @@ (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=33) "var _ColorMap = map[Color]string{", - (string) (len=21) "\t0: _ColorName[0:5],", - (string) (len=22) "\t1: _ColorName[5:10],", - (string) (len=23) "\t2: _ColorName[10:13],", - (string) (len=23) "\t3: _ColorName[13:18],", - (string) (len=23) "\t33: _ColorName[18:22],", - (string) (len=23) "\t34: _ColorName[22:26],", - (string) (len=23) "\t35: _ColorName[26:32],", + (string) (len=25) "\tBlack: _ColorName[0:5],", + (string) (len=26) "\tWhite: _ColorName[5:10],", + (string) (len=27) "\tRed: _ColorName[10:13],", + (string) (len=27) "\tGreen: _ColorName[13:18],", + (string) (len=27) "\tBlue: _ColorName[18:22],", + (string) (len=27) "\tGrey: _ColorName[22:26],", + (string) (len=27) "\tYellow: _ColorName[26:32],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -200,20 +200,20 @@ (string) (len=1) "}", (string) "", (string) (len=35) "var _ColorValue = map[string]Color{", - (string) (len=39) "\t_ColorName[0:5]: 0,", - (string) (len=39) "\tstrings.ToLower(_ColorName[0:5]): 0,", - (string) (len=39) "\t_ColorName[5:10]: 1,", - (string) (len=39) "\tstrings.ToLower(_ColorName[5:10]): 1,", - (string) (len=39) "\t_ColorName[10:13]: 2,", - (string) (len=39) "\tstrings.ToLower(_ColorName[10:13]): 2,", - (string) (len=39) "\t_ColorName[13:18]: 3,", - (string) (len=39) "\tstrings.ToLower(_ColorName[13:18]): 3,", - (string) (len=40) "\t_ColorName[18:22]: 33,", - (string) (len=40) "\tstrings.ToLower(_ColorName[18:22]): 33,", - (string) (len=40) "\t_ColorName[22:26]: 34,", - (string) (len=40) "\tstrings.ToLower(_ColorName[22:26]): 34,", - (string) (len=40) "\t_ColorName[26:32]: 35,", - (string) (len=40) "\tstrings.ToLower(_ColorName[26:32]): 35,", + (string) (len=43) "\t_ColorName[0:5]: Black,", + (string) (len=43) "\tstrings.ToLower(_ColorName[0:5]): Black,", + (string) (len=43) "\t_ColorName[5:10]: White,", + (string) (len=43) "\tstrings.ToLower(_ColorName[5:10]): White,", + (string) (len=41) "\t_ColorName[10:13]: Red,", + (string) (len=41) "\tstrings.ToLower(_ColorName[10:13]): Red,", + (string) (len=43) "\t_ColorName[13:18]: Green,", + (string) (len=43) "\tstrings.ToLower(_ColorName[13:18]): Green,", + (string) (len=42) "\t_ColorName[18:22]: Blue,", + (string) (len=42) "\tstrings.ToLower(_ColorName[18:22]): Blue,", + (string) (len=42) "\t_ColorName[22:26]: Grey,", + (string) (len=42) "\tstrings.ToLower(_ColorName[22:26]): Grey,", + (string) (len=44) "\t_ColorName[26:32]: Yellow,", + (string) (len=44) "\tstrings.ToLower(_ColorName[26:32]): Yellow,", (string) (len=1) "}", (string) "", (string) (len=53) "// ParseColor attempts to convert a string to a Color", @@ -278,13 +278,13 @@ (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", - (string) (len=32) "\t0: _ColorWithCommentName[0:5],", - (string) (len=33) "\t1: _ColorWithCommentName[5:10],", - (string) (len=34) "\t2: _ColorWithCommentName[10:13],", - (string) (len=34) "\t3: _ColorWithCommentName[13:18],", - (string) (len=34) "\t33: _ColorWithCommentName[18:22],", - (string) (len=34) "\t34: _ColorWithCommentName[22:26],", - (string) (len=34) "\t35: _ColorWithCommentName[26:32],", + (string) (len=36) "\tBlack: _ColorWithCommentName[0:5],", + (string) (len=37) "\tWhite: _ColorWithCommentName[5:10],", + (string) (len=38) "\tRed: _ColorWithCommentName[10:13],", + (string) (len=38) "\tGreen: _ColorWithCommentName[13:18],", + (string) (len=38) "\tBlue: _ColorWithCommentName[18:22],", + (string) (len=38) "\tGrey: _ColorWithCommentName[22:26],", + (string) (len=38) "\tYellow: _ColorWithCommentName[26:32],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -296,20 +296,20 @@ (string) (len=1) "}", (string) "", (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", - (string) (len=50) "\t_ColorWithCommentName[0:5]: 0,", - (string) (len=50) "\tstrings.ToLower(_ColorWithCommentName[0:5]): 0,", - (string) (len=50) "\t_ColorWithCommentName[5:10]: 1,", - (string) (len=50) "\tstrings.ToLower(_ColorWithCommentName[5:10]): 1,", - (string) (len=50) "\t_ColorWithCommentName[10:13]: 2,", - (string) (len=50) "\tstrings.ToLower(_ColorWithCommentName[10:13]): 2,", - (string) (len=50) "\t_ColorWithCommentName[13:18]: 3,", - (string) (len=50) "\tstrings.ToLower(_ColorWithCommentName[13:18]): 3,", - (string) (len=51) "\t_ColorWithCommentName[18:22]: 33,", - (string) (len=51) "\tstrings.ToLower(_ColorWithCommentName[18:22]): 33,", - (string) (len=51) "\t_ColorWithCommentName[22:26]: 34,", - (string) (len=51) "\tstrings.ToLower(_ColorWithCommentName[22:26]): 34,", - (string) (len=51) "\t_ColorWithCommentName[26:32]: 35,", - (string) (len=51) "\tstrings.ToLower(_ColorWithCommentName[26:32]): 35,", + (string) (len=54) "\t_ColorWithCommentName[0:5]: Black,", + (string) (len=54) "\tstrings.ToLower(_ColorWithCommentName[0:5]): Black,", + (string) (len=54) "\t_ColorWithCommentName[5:10]: White,", + (string) (len=54) "\tstrings.ToLower(_ColorWithCommentName[5:10]): White,", + (string) (len=52) "\t_ColorWithCommentName[10:13]: Red,", + (string) (len=52) "\tstrings.ToLower(_ColorWithCommentName[10:13]): Red,", + (string) (len=54) "\t_ColorWithCommentName[13:18]: Green,", + (string) (len=54) "\tstrings.ToLower(_ColorWithCommentName[13:18]): Green,", + (string) (len=53) "\t_ColorWithCommentName[18:22]: Blue,", + (string) (len=53) "\tstrings.ToLower(_ColorWithCommentName[18:22]): Blue,", + (string) (len=53) "\t_ColorWithCommentName[22:26]: Grey,", + (string) (len=53) "\tstrings.ToLower(_ColorWithCommentName[22:26]): Grey,", + (string) (len=55) "\t_ColorWithCommentName[26:32]: Yellow,", + (string) (len=55) "\tstrings.ToLower(_ColorWithCommentName[26:32]): Yellow,", (string) (len=1) "}", (string) "", (string) (len=75) "// ParseColorWithComment attempts to convert a string to a ColorWithComment", @@ -374,13 +374,13 @@ (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", - (string) (len=33) "\t0: _ColorWithComment2Name[0:5],", - (string) (len=34) "\t1: _ColorWithComment2Name[5:10],", - (string) (len=35) "\t2: _ColorWithComment2Name[10:13],", - (string) (len=35) "\t3: _ColorWithComment2Name[13:18],", - (string) (len=35) "\t33: _ColorWithComment2Name[18:22],", - (string) (len=35) "\t34: _ColorWithComment2Name[22:26],", - (string) (len=35) "\t35: _ColorWithComment2Name[26:32],", + (string) (len=37) "\tBlack: _ColorWithComment2Name[0:5],", + (string) (len=38) "\tWhite: _ColorWithComment2Name[5:10],", + (string) (len=39) "\tRed: _ColorWithComment2Name[10:13],", + (string) (len=39) "\tGreen: _ColorWithComment2Name[13:18],", + (string) (len=39) "\tBlue: _ColorWithComment2Name[18:22],", + (string) (len=39) "\tGrey: _ColorWithComment2Name[22:26],", + (string) (len=39) "\tYellow: _ColorWithComment2Name[26:32],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -392,20 +392,20 @@ (string) (len=1) "}", (string) "", (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", - (string) (len=51) "\t_ColorWithComment2Name[0:5]: 0,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): 0,", - (string) (len=51) "\t_ColorWithComment2Name[5:10]: 1,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment2Name[5:10]): 1,", - (string) (len=51) "\t_ColorWithComment2Name[10:13]: 2,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment2Name[10:13]): 2,", - (string) (len=51) "\t_ColorWithComment2Name[13:18]: 3,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment2Name[13:18]): 3,", - (string) (len=52) "\t_ColorWithComment2Name[18:22]: 33,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment2Name[18:22]): 33,", - (string) (len=52) "\t_ColorWithComment2Name[22:26]: 34,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment2Name[22:26]): 34,", - (string) (len=52) "\t_ColorWithComment2Name[26:32]: 35,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): 35,", + (string) (len=55) "\t_ColorWithComment2Name[0:5]: Black,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): Black,", + (string) (len=55) "\t_ColorWithComment2Name[5:10]: White,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment2Name[5:10]): White,", + (string) (len=53) "\t_ColorWithComment2Name[10:13]: Red,", + (string) (len=53) "\tstrings.ToLower(_ColorWithComment2Name[10:13]): Red,", + (string) (len=55) "\t_ColorWithComment2Name[13:18]: Green,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment2Name[13:18]): Green,", + (string) (len=54) "\t_ColorWithComment2Name[18:22]: Blue,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment2Name[18:22]): Blue,", + (string) (len=54) "\t_ColorWithComment2Name[22:26]: Grey,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment2Name[22:26]): Grey,", + (string) (len=56) "\t_ColorWithComment2Name[26:32]: Yellow,", + (string) (len=56) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): Yellow,", (string) (len=1) "}", (string) "", (string) (len=77) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2", @@ -477,16 +477,16 @@ (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", (string) "", (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", - (string) (len=33) "\t0: _ColorWithComment3Name[0:5],", - (string) (len=34) "\t1: _ColorWithComment3Name[5:10],", - (string) (len=35) "\t2: _ColorWithComment3Name[10:13],", - (string) (len=35) "\t33: _ColorWithComment3Name[13:18],", - (string) (len=35) "\t34: _ColorWithComment3Name[18:22],", - (string) (len=35) "\t35: _ColorWithComment3Name[22:26],", - (string) (len=35) "\t36: _ColorWithComment3Name[26:32],", - (string) (len=35) "\t37: _ColorWithComment3Name[32:42],", - (string) (len=35) "\t38: _ColorWithComment3Name[42:52],", - (string) (len=35) "\t39: _ColorWithComment3Name[52:67],", + (string) (len=44) "\tBlack: _ColorWithComment3Name[0:5],", + (string) (len=45) "\tWhite: _ColorWithComment3Name[5:10],", + (string) (len=46) "\tRed: _ColorWithComment3Name[10:13],", + (string) (len=46) "\tGreen: _ColorWithComment3Name[13:18],", + (string) (len=46) "\tBlue: _ColorWithComment3Name[18:22],", + (string) (len=46) "\tGrey: _ColorWithComment3Name[22:26],", + (string) (len=46) "\tYellow: _ColorWithComment3Name[26:32],", + (string) (len=46) "\tBlueGreen: _ColorWithComment3Name[32:42],", + (string) (len=46) "\tRedOrange: _ColorWithComment3Name[42:52],", + (string) (len=46) "\tRedOrangeBlue: _ColorWithComment3Name[52:67],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -498,26 +498,26 @@ (string) (len=1) "}", (string) "", (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", - (string) (len=51) "\t_ColorWithComment3Name[0:5]: 0,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): 0,", - (string) (len=51) "\t_ColorWithComment3Name[5:10]: 1,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment3Name[5:10]): 1,", - (string) (len=51) "\t_ColorWithComment3Name[10:13]: 2,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment3Name[10:13]): 2,", - (string) (len=52) "\t_ColorWithComment3Name[13:18]: 33,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[13:18]): 33,", - (string) (len=52) "\t_ColorWithComment3Name[18:22]: 34,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[18:22]): 34,", - (string) (len=52) "\t_ColorWithComment3Name[22:26]: 35,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[22:26]): 35,", - (string) (len=52) "\t_ColorWithComment3Name[26:32]: 36,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[26:32]): 36,", - (string) (len=52) "\t_ColorWithComment3Name[32:42]: 37,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[32:42]): 37,", - (string) (len=52) "\t_ColorWithComment3Name[42:52]: 38,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[42:52]): 38,", - (string) (len=52) "\t_ColorWithComment3Name[52:67]: 39,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): 39,", + (string) (len=55) "\t_ColorWithComment3Name[0:5]: Black,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): Black,", + (string) (len=55) "\t_ColorWithComment3Name[5:10]: White,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment3Name[5:10]): White,", + (string) (len=53) "\t_ColorWithComment3Name[10:13]: Red,", + (string) (len=53) "\tstrings.ToLower(_ColorWithComment3Name[10:13]): Red,", + (string) (len=55) "\t_ColorWithComment3Name[13:18]: Green,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment3Name[13:18]): Green,", + (string) (len=54) "\t_ColorWithComment3Name[18:22]: Blue,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment3Name[18:22]): Blue,", + (string) (len=54) "\t_ColorWithComment3Name[22:26]: Grey,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment3Name[22:26]): Grey,", + (string) (len=56) "\t_ColorWithComment3Name[26:32]: Yellow,", + (string) (len=56) "\tstrings.ToLower(_ColorWithComment3Name[26:32]): Yellow,", + (string) (len=59) "\t_ColorWithComment3Name[32:42]: BlueGreen,", + (string) (len=59) "\tstrings.ToLower(_ColorWithComment3Name[32:42]): BlueGreen,", + (string) (len=59) "\t_ColorWithComment3Name[42:52]: RedOrange,", + (string) (len=59) "\tstrings.ToLower(_ColorWithComment3Name[42:52]): RedOrange,", + (string) (len=63) "\t_ColorWithComment3Name[52:67]: RedOrangeBlue,", + (string) (len=63) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): RedOrangeBlue,", (string) (len=1) "}", (string) "", (string) (len=77) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3", @@ -592,15 +592,15 @@ (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", (string) "", (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", - (string) (len=33) "\t1: _ColorWithComment4Name[0:5],", - (string) (len=34) "\t2: _ColorWithComment4Name[5:10],", - (string) (len=35) "\t3: _ColorWithComment4Name[10:13],", - (string) (len=35) "\t33: _ColorWithComment4Name[13:18],", - (string) (len=35) "\t34: _ColorWithComment4Name[18:22],", - (string) (len=35) "\t35: _ColorWithComment4Name[22:26],", - (string) (len=35) "\t36: _ColorWithComment4Name[26:32],", - (string) (len=35) "\t37: _ColorWithComment4Name[32:42],", - (string) (len=35) "\t38: _ColorWithComment4Name[42:52],", + (string) (len=40) "\tBlack: _ColorWithComment4Name[0:5],", + (string) (len=41) "\tWhite: _ColorWithComment4Name[5:10],", + (string) (len=42) "\tRed: _ColorWithComment4Name[10:13],", + (string) (len=42) "\tGreen: _ColorWithComment4Name[13:18],", + (string) (len=42) "\tBlue: _ColorWithComment4Name[18:22],", + (string) (len=42) "\tGrey: _ColorWithComment4Name[22:26],", + (string) (len=42) "\tYellow: _ColorWithComment4Name[26:32],", + (string) (len=42) "\tBlueGreen: _ColorWithComment4Name[32:42],", + (string) (len=42) "\tRedOrange: _ColorWithComment4Name[42:52],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -612,24 +612,24 @@ (string) (len=1) "}", (string) "", (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", - (string) (len=51) "\t_ColorWithComment4Name[0:5]: 1,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): 1,", - (string) (len=51) "\t_ColorWithComment4Name[5:10]: 2,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment4Name[5:10]): 2,", - (string) (len=51) "\t_ColorWithComment4Name[10:13]: 3,", - (string) (len=51) "\tstrings.ToLower(_ColorWithComment4Name[10:13]): 3,", - (string) (len=52) "\t_ColorWithComment4Name[13:18]: 33,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[13:18]): 33,", - (string) (len=52) "\t_ColorWithComment4Name[18:22]: 34,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[18:22]): 34,", - (string) (len=52) "\t_ColorWithComment4Name[22:26]: 35,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[22:26]): 35,", - (string) (len=52) "\t_ColorWithComment4Name[26:32]: 36,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[26:32]): 36,", - (string) (len=52) "\t_ColorWithComment4Name[32:42]: 37,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[32:42]): 37,", - (string) (len=52) "\t_ColorWithComment4Name[42:52]: 38,", - (string) (len=52) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): 38,", + (string) (len=55) "\t_ColorWithComment4Name[0:5]: Black,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): Black,", + (string) (len=55) "\t_ColorWithComment4Name[5:10]: White,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment4Name[5:10]): White,", + (string) (len=53) "\t_ColorWithComment4Name[10:13]: Red,", + (string) (len=53) "\tstrings.ToLower(_ColorWithComment4Name[10:13]): Red,", + (string) (len=55) "\t_ColorWithComment4Name[13:18]: Green,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment4Name[13:18]): Green,", + (string) (len=54) "\t_ColorWithComment4Name[18:22]: Blue,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment4Name[18:22]): Blue,", + (string) (len=54) "\t_ColorWithComment4Name[22:26]: Grey,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment4Name[22:26]): Grey,", + (string) (len=56) "\t_ColorWithComment4Name[26:32]: Yellow,", + (string) (len=56) "\tstrings.ToLower(_ColorWithComment4Name[26:32]): Yellow,", + (string) (len=59) "\t_ColorWithComment4Name[32:42]: BlueGreen,", + (string) (len=59) "\tstrings.ToLower(_ColorWithComment4Name[32:42]): BlueGreen,", + (string) (len=59) "\t_ColorWithComment4Name[42:52]: RedOrange,", + (string) (len=59) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): RedOrange,", (string) (len=1) "}", (string) "", (string) (len=77) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4", @@ -689,9 +689,9 @@ (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", (string) "", (string) (len=33) "var _ModelMap = map[Model]string{", - (string) (len=20) "\t0: _ModelName[0:6],", - (string) (len=21) "\t2: _ModelName[6:11],", - (string) (len=22) "\t4: _ModelName[11:15],", + (string) (len=25) "\tToyota: _ModelName[0:6],", + (string) (len=26) "\tChevy: _ModelName[6:11],", + (string) (len=27) "\tFord: _ModelName[11:15],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -703,12 +703,12 @@ (string) (len=1) "}", (string) "", (string) (len=35) "var _ModelValue = map[string]Model{", - (string) (len=39) "\t_ModelName[0:6]: 0,", - (string) (len=39) "\tstrings.ToLower(_ModelName[0:6]): 0,", - (string) (len=39) "\t_ModelName[6:11]: 2,", - (string) (len=39) "\tstrings.ToLower(_ModelName[6:11]): 2,", - (string) (len=39) "\t_ModelName[11:15]: 4,", - (string) (len=39) "\tstrings.ToLower(_ModelName[11:15]): 4,", + (string) (len=44) "\t_ModelName[0:6]: Toyota,", + (string) (len=44) "\tstrings.ToLower(_ModelName[0:6]): Toyota,", + (string) (len=43) "\t_ModelName[6:11]: Chevy,", + (string) (len=43) "\tstrings.ToLower(_ModelName[6:11]): Chevy,", + (string) (len=42) "\t_ModelName[11:15]: Ford,", + (string) (len=42) "\tstrings.ToLower(_ModelName[11:15]): Ford,", (string) (len=1) "}", (string) "", (string) (len=53) "// ParseModel attempts to convert a string to a Model", @@ -772,13 +772,13 @@ (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", (string) "", (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", - (string) (len=26) "\t0: _SanitizingName[0:11],", - (string) (len=27) "\t1: _SanitizingName[11:23],", - (string) (len=27) "\t2: _SanitizingName[23:39],", - (string) (len=27) "\t3: _SanitizingName[39:51],", - (string) (len=27) "\t4: _SanitizingName[51:61],", - (string) (len=27) "\t5: _SanitizingName[61:72],", - (string) (len=27) "\t6: _SanitizingName[72:86],", + (string) (len=41) "\tTestHyphen: _SanitizingName[0:11],", + (string) (len=42) "\tXHyphenStart: _SanitizingName[11:23],", + (string) (len=42) "\tXUnderscoreFirst: _SanitizingName[23:39],", + (string) (len=42) "\tX0numberFirst: _SanitizingName[39:51],", + (string) (len=42) "\tX123456789a: _SanitizingName[51:61],", + (string) (len=42) "\tX123123Asdf: _SanitizingName[61:72],", + (string) (len=42) "\tEndingHyphen: _SanitizingName[72:86],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -790,20 +790,20 @@ (string) (len=1) "}", (string) "", (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", - (string) (len=44) "\t_SanitizingName[0:11]: 0,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[0:11]): 0,", - (string) (len=44) "\t_SanitizingName[11:23]: 1,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[11:23]): 1,", - (string) (len=44) "\t_SanitizingName[23:39]: 2,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[23:39]): 2,", - (string) (len=44) "\t_SanitizingName[39:51]: 3,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[39:51]): 3,", - (string) (len=44) "\t_SanitizingName[51:61]: 4,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[51:61]): 4,", - (string) (len=44) "\t_SanitizingName[61:72]: 5,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[61:72]): 5,", - (string) (len=44) "\t_SanitizingName[72:86]: 6,", - (string) (len=44) "\tstrings.ToLower(_SanitizingName[72:86]): 6,", + (string) (len=53) "\t_SanitizingName[0:11]: TestHyphen,", + (string) (len=53) "\tstrings.ToLower(_SanitizingName[0:11]): TestHyphen,", + (string) (len=55) "\t_SanitizingName[11:23]: XHyphenStart,", + (string) (len=55) "\tstrings.ToLower(_SanitizingName[11:23]): XHyphenStart,", + (string) (len=59) "\t_SanitizingName[23:39]: XUnderscoreFirst,", + (string) (len=59) "\tstrings.ToLower(_SanitizingName[23:39]): XUnderscoreFirst,", + (string) (len=56) "\t_SanitizingName[39:51]: X0numberFirst,", + (string) (len=56) "\tstrings.ToLower(_SanitizingName[39:51]): X0numberFirst,", + (string) (len=54) "\t_SanitizingName[51:61]: X123456789a,", + (string) (len=54) "\tstrings.ToLower(_SanitizingName[51:61]): X123456789a,", + (string) (len=54) "\t_SanitizingName[61:72]: X123123Asdf,", + (string) (len=54) "\tstrings.ToLower(_SanitizingName[61:72]): X123123Asdf,", + (string) (len=55) "\t_SanitizingName[72:86]: EndingHyphen,", + (string) (len=55) "\tstrings.ToLower(_SanitizingName[72:86]): EndingHyphen,", (string) (len=1) "}", (string) "", (string) (len=63) "// ParseSanitizing attempts to convert a string to a Sanitizing", @@ -859,9 +859,9 @@ (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", (string) "", (string) (len=31) "var _SodaMap = map[Soda]string{", - (string) (len=19) "\t0: _SodaName[0:4],", - (string) (len=19) "\t1: _SodaName[4:9],", - (string) (len=20) "\t2: _SodaName[9:15],", + (string) (len=24) "\tCoke: _SodaName[0:4],", + (string) (len=24) "\tPepsi: _SodaName[4:9],", + (string) (len=25) "\tMtnDew: _SodaName[9:15],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -873,12 +873,12 @@ (string) (len=1) "}", (string) "", (string) (len=33) "var _SodaValue = map[string]Soda{", - (string) (len=37) "\t_SodaName[0:4]: 0,", - (string) (len=37) "\tstrings.ToLower(_SodaName[0:4]): 0,", - (string) (len=37) "\t_SodaName[4:9]: 1,", - (string) (len=37) "\tstrings.ToLower(_SodaName[4:9]): 1,", - (string) (len=37) "\t_SodaName[9:15]: 2,", - (string) (len=37) "\tstrings.ToLower(_SodaName[9:15]): 2,", + (string) (len=40) "\t_SodaName[0:4]: Coke,", + (string) (len=40) "\tstrings.ToLower(_SodaName[0:4]): Coke,", + (string) (len=41) "\t_SodaName[4:9]: Pepsi,", + (string) (len=41) "\tstrings.ToLower(_SodaName[4:9]): Pepsi,", + (string) (len=42) "\t_SodaName[9:15]: MtnDew,", + (string) (len=42) "\tstrings.ToLower(_SodaName[9:15]): MtnDew,", (string) (len=1) "}", (string) "", (string) (len=51) "// ParseSoda attempts to convert a string to a Soda", @@ -932,8 +932,8 @@ (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", (string) "", (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", - (string) (len=29) "\t23: _StartNotZeroName[0:12],", - (string) (len=30) "\t24: _StartNotZeroName[12:19],", + (string) (len=39) "\tStartWithNum: _StartNotZeroName[0:12],", + (string) (len=40) "\tNextNum: _StartNotZeroName[12:19],", (string) (len=1) "}", (string) "", (string) (len=44) "// String implements the Stringer interface.", @@ -945,10 +945,10 @@ (string) (len=1) "}", (string) "", (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", - (string) (len=47) "\t_StartNotZeroName[0:12]: 23,", - (string) (len=47) "\tstrings.ToLower(_StartNotZeroName[0:12]): 23,", - (string) (len=47) "\t_StartNotZeroName[12:19]: 24,", - (string) (len=47) "\tstrings.ToLower(_StartNotZeroName[12:19]): 24,", + (string) (len=57) "\t_StartNotZeroName[0:12]: StartWithNum,", + (string) (len=57) "\tstrings.ToLower(_StartNotZeroName[0:12]): StartWithNum,", + (string) (len=52) "\t_StartNotZeroName[12:19]: NextNum,", + (string) (len=52) "\tstrings.ToLower(_StartNotZeroName[12:19]): NextNum,", (string) (len=1) "}", (string) "", (string) (len=67) "// ParseStartNotZero attempts to convert a string to a StartNotZero", diff --git a/generator/embedded.go b/generator/embedded.go index da159178..47d6bbfd 100644 --- a/generator/embedded.go +++ b/generator/embedded.go @@ -1,4 +1,5 @@ //go:generate ../bin/go-bindata -nometadata -o assets/assets.go -pkg=assets enum.tmpl +//go:build !go1.16 // +build !go1.16 package generator diff --git a/generator/embedded_1.16.go b/generator/embedded_1.16.go index 044eed88..83b12a94 100644 --- a/generator/embedded_1.16.go +++ b/generator/embedded_1.16.go @@ -1,3 +1,4 @@ +//go:build go1.16 // +build go1.16 package generator diff --git a/generator/enum.tmpl b/generator/enum.tmpl index 75c096d5..0d512836 100644 --- a/generator/enum.tmpl +++ b/generator/enum.tmpl @@ -28,6 +28,18 @@ const ( {{ template "stringer" . }} +var _{{.enum.Name}}Map = {{ mapify .enum }} + +// String implements the Stringer interface. +func (x {{.enum.Name}}) String() string { + if str, ok := _{{.enum.Name}}Map[x]; ok { + return str + } + return fmt.Sprintf("{{.enum.Name}}(%d)", x) +} + +var _{{.enum.Name}}Value = {{ unmapify .enum .lowercase }} + // Parse{{.enum.Name}} attempts to convert a string to a {{.enum.Name}} func Parse{{.enum.Name}}(name string) ({{.enum.Name}}, error) { if x, ok := _{{.enum.Name}}Value[name]; ok { @@ -315,16 +327,4 @@ func {{.enum.Name}}Names() []string { } {{ end -}} -var _{{.enum.Name}}Map = {{ mapify .enum }} - -// String implements the Stringer interface. -func (x {{.enum.Name}}) String() string { - if str, ok := _{{.enum.Name}}Map[x]; ok { - return str - } - return fmt.Sprintf("{{.enum.Name}}(%d)", x) -} - -var _{{.enum.Name}}Value = {{ unmapify .enum .lowercase }} - {{end}} diff --git a/generator/template_funcs.go b/generator/template_funcs.go index bd496cbf..a8291081 100644 --- a/generator/template_funcs.go +++ b/generator/template_funcs.go @@ -22,7 +22,7 @@ func Mapify(e Enum) (ret string, err error) { for _, val := range e.Values { if val.Name != skipHolder { nextIndex := index + len(val.Name) - ret = fmt.Sprintf("%s%d: %s[%d:%d],\n", ret, val.Value, strName, index, nextIndex) + ret = fmt.Sprintf("%s%s: %s[%d:%d],\n", ret, val.PrefixedName, strName, index, nextIndex) index = nextIndex } } @@ -38,9 +38,9 @@ func Unmapify(e Enum, lowercase bool) (ret string, err error) { for _, val := range e.Values { if val.Name != skipHolder { nextIndex := index + len(val.Name) - ret = fmt.Sprintf("%s%s[%d:%d]: %d,\n", ret, strName, index, nextIndex, val.Value) + ret = fmt.Sprintf("%s%s[%d:%d]: %s,\n", ret, strName, index, nextIndex, val.PrefixedName) if lowercase { - ret = fmt.Sprintf("%sstrings.ToLower(%s[%d:%d]): %d,\n", ret, strName, index, nextIndex, val.Value) + ret = fmt.Sprintf("%sstrings.ToLower(%s[%d:%d]): %s,\n", ret, strName, index, nextIndex, val.PrefixedName) } index = nextIndex } diff --git a/tools.go b/tools.go index 612666e4..897edddb 100644 --- a/tools.go +++ b/tools.go @@ -1,3 +1,4 @@ +//go:build tools // +build tools package main From ab3830ef12390c88ece7c4b750bf5aa8189c0fad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Nov 2021 21:37:54 -0700 Subject: [PATCH 19/91] Bump github.com/labstack/gommon from 0.3.0 to 0.3.1 (#72) Bumps [github.com/labstack/gommon](https://github.com/labstack/gommon) from 0.3.0 to 0.3.1. - [Release notes](https://github.com/labstack/gommon/releases) - [Commits](https://github.com/labstack/gommon/compare/v0.3.0...v0.3.1) --- updated-dependencies: - dependency-name: github.com/labstack/gommon dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 5 +---- go.sum | 28 +++++++++++----------------- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/go.mod b/go.mod index a160da3a..f9c92cae 100644 --- a/go.mod +++ b/go.mod @@ -8,15 +8,13 @@ require ( github.com/Masterminds/sprig v2.22.0+incompatible github.com/bradleyjkemp/cupaloy v2.2.0+incompatible github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect github.com/golang/mock v1.6.0 github.com/google/uuid v1.2.0 // indirect github.com/huandu/xstrings v1.3.2 // indirect github.com/imdario/mergo v0.3.12 // indirect github.com/kevinburke/go-bindata v3.22.0+incompatible github.com/kr/text v0.2.0 // indirect - github.com/labstack/gommon v0.3.0 - github.com/mattn/go-colorable v0.1.8 // indirect + github.com/labstack/gommon v0.3.1 github.com/mattn/goveralls v0.0.11 github.com/mitchellh/copystructure v1.1.2 // indirect github.com/pkg/errors v0.9.1 @@ -27,5 +25,4 @@ require ( golang.org/x/tools v0.1.7 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) diff --git a/go.sum b/go.sum index f6f6f850..9b420215 100644 --- a/go.sum +++ b/go.sum @@ -30,15 +30,12 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/labstack/gommon v0.3.0 h1:JEeO0bvc78PKdyHxloTKiF8BD5iGrH8T6MSeGvSgob0= -github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= -github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o= +github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= +github.com/mattn/go-colorable v0.1.11 h1:nQ+aFkoE2TMGc0b68U2OKSexC+eq46+XwZzWXHRmPYs= +github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/goveralls v0.0.11 h1:eJXea6R6IFlL1QMKNMzDvvHv/hwGrnvyig4N+0+XiMM= github.com/mattn/goveralls v0.0.11/go.mod h1:gU8SyhNswsJKchEV93xRQxX6X3Ei4PJdQk/6ZHvrvRk= github.com/mitchellh/copystructure v1.1.2 h1:Th2TIvG1+6ma3e/0/bopBKohOTY7s4dA8V2q4EUcBJ0= @@ -56,13 +53,12 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeV github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -79,17 +75,16 @@ golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e h1:WUoyKPm6nCo1BnNUvPGnFG3T5DUVem42yDJZZ4CNxMA= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211103235746-7861aae1554b h1:1VkfZQv42XQlA/jchYumAnv1UPo6RgF9rJFkTgZIxO4= +golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -106,7 +101,6 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= From b3ad6c9f2bef9f704e08a57934ae30a1fd1a0fbf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 5 Dec 2021 19:20:31 -0700 Subject: [PATCH 20/91] Bump golang.org/x/tools from 0.1.7 to 0.1.8 (#73) Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.1.7 to 0.1.8. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.1.7...v0.1.8) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index f9c92cae..c7a0b86c 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/stretchr/testify v1.7.0 github.com/urfave/cli/v2 v2.3.0 golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf // indirect - golang.org/x/tools v0.1.7 + golang.org/x/tools v0.1.8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go.sum b/go.sum index 9b420215..9f876108 100644 --- a/go.sum +++ b/go.sum @@ -60,18 +60,19 @@ github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/X github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf h1:B2n+Zi5QeYRDAEodEu72OS36gmTWjgpXr2+cWcBW90o= golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= -golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -81,19 +82,20 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211103235746-7861aae1554b h1:1VkfZQv42XQlA/jchYumAnv1UPo6RgF9rJFkTgZIxO4= golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.7 h1:6j8CgantCy3yc8JGBqkDLMKWqZ0RDU2g1HVgacojGWQ= -golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= +golang.org/x/tools v0.1.8 h1:P1HhGGuLW4aAclzjtmJdf0mJOjVUZUzOTqkAkWL+l6w= +golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= From a703e9cfb59f9145c97afb68d689682001bc177d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jan 2022 06:33:42 -0700 Subject: [PATCH 21/91] Bump github.com/bradleyjkemp/cupaloy (#75) Bumps [github.com/bradleyjkemp/cupaloy](https://github.com/bradleyjkemp/cupaloy) from 2.2.0+incompatible to 2.3.0+incompatible. - [Release notes](https://github.com/bradleyjkemp/cupaloy/releases) - [Commits](https://github.com/bradleyjkemp/cupaloy/compare/v2.2.0...v2.3.0) --- updated-dependencies: - dependency-name: github.com/bradleyjkemp/cupaloy dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index c7a0b86c..316760e4 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/sprig v2.22.0+incompatible - github.com/bradleyjkemp/cupaloy v2.2.0+incompatible + github.com/bradleyjkemp/cupaloy v2.3.0+incompatible github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect github.com/golang/mock v1.6.0 github.com/google/uuid v1.2.0 // indirect diff --git a/go.sum b/go.sum index 9f876108..9199d66e 100644 --- a/go.sum +++ b/go.sum @@ -5,8 +5,8 @@ github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3Q github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60= github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= -github.com/bradleyjkemp/cupaloy v2.2.0+incompatible h1:Ed7uOEn/o3DIox3PV//SmtXnNO9yPZDdP9wZ0bdcEtI= -github.com/bradleyjkemp/cupaloy v2.2.0+incompatible/go.mod h1:Au1Xw1sgaJ5iSFktEhYsS0dbQiS1B0/XMXl+42y9Ilk= +github.com/bradleyjkemp/cupaloy v2.3.0+incompatible h1:UafIjBvWQmS9i/xRg+CamMrnLTKNzo+bdmT/oH34c2Y= +github.com/bradleyjkemp/cupaloy v2.3.0+incompatible/go.mod h1:Au1Xw1sgaJ5iSFktEhYsS0dbQiS1B0/XMXl+42y9Ilk= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= From 07a5b318d9ef317345f0cfca0c9347eda0e2bfc4 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Sun, 23 Jan 2022 10:40:22 -0700 Subject: [PATCH 22/91] ForceLowercase and MustParse (#80) * Add puncuation to comments * ForceLower and MustParse * Revert makefile changes Co-authored-by: Alex Bice --- README.md | 42 ++++++++++++ example/animal_enum.go | 2 +- example/color.go | 2 +- example/color_enum.go | 15 ++++- example/color_test.go | 6 ++ example/commented_enum.go | 12 ++-- example/custom_prefix_enum.go | 2 +- example/example_enum.go | 12 ++-- example/force_lower.go | 9 +++ example/force_lower_enum.go | 46 +++++++++++++ example/force_lower_test.go | 34 ++++++++++ example/globs/letter_enum.go | 2 +- example/globs/number_enum.go | 2 +- example/sql_enum.go | 6 +- example/sql_int_enum.go | 2 +- example/sql_str_enum.go | 2 +- example/user_template_enum.go | 2 +- .../generator-TestCustomPrefixExampleFile | 66 +++++++++---------- .../.snapshots/generator-TestExampleFile | 66 +++++++++---------- .../generator-TestNoPrefixExampleFile | 66 +++++++++---------- ...or-TestNoPrefixExampleFileWithSnakeToCamel | 66 +++++++++---------- generator/enum.tmpl | 19 ++++-- generator/generator.go | 16 +++++ generator/template_funcs.go | 9 ++- main.go | 18 +++++ 25 files changed, 360 insertions(+), 164 deletions(-) create mode 100644 example/force_lower.go create mode 100644 example/force_lower_enum.go create mode 100644 example/force_lower_test.go diff --git a/README.md b/README.md index 8e3b3b9b..d5a15bf0 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,48 @@ An enum generator for go ## How it works +go-enum will take a commented type declaration like this: + +```go +// ENUM(jpeg, jpg, png, tiff, gif) +type ImageType int +``` + +and generate a file with the iota definition along various optional niceties that you may need: + +```go +const ( + // ImageTypeJpeg is a ImageType of type Jpeg. + ImageTypeJpeg ImageType = iota + // ImageTypeJpg is a ImageType of type Jpg. + ImageTypeJpg + // ImageTypePng is a ImageType of type Png. + ImageTypePng + // ImageTypeTiff is a ImageType of type Tiff. + ImageTypeTiff + // ImageTypeGif is a ImageType of type Gif. + ImageTypeGif +) + +// String implements the Stringer interface. +func (x ImageType) String() string + +// ParseImageType attempts to convert a string to a ImageType. +func ParseImageType(name string) (ImageType, error) + +// MarshalText implements the text marshaller method. +func (x ImageType) MarshalText() ([]byte, error) + +// UnmarshalText implements the text unmarshaller method. +func (x *ImageType) UnmarshalText(text []byte) error +``` + +**Fear not the fact that the `MarshalText` and `UnmarshalText` are generated rather than JSON methods... they will still be utilized by the default JSON encoding methods.** + +If you find that the options given are not adequate for your use case, there is an option to add a custom template (`-t` flag) to the processing engine so that your custom code can be created! + +## Goal + The goal of go-enum is to create an easy to use enum generator that will take a decorated type declaration like `type EnumName int` and create the associated constant values and funcs that will make life a little easier for adding new values. It's not perfect, but I think it's useful. diff --git a/example/animal_enum.go b/example/animal_enum.go index f6c15a95..47d05e4a 100644 --- a/example/animal_enum.go +++ b/example/animal_enum.go @@ -49,7 +49,7 @@ var _AnimalValue = map[string]Animal{ _AnimalName[16:21]: AnimalFishSharp, } -// ParseAnimal attempts to convert a string to a Animal +// ParseAnimal attempts to convert a string to a Animal. func ParseAnimal(name string) (Animal, error) { if x, ok := _AnimalValue[name]; ok { return x, nil diff --git a/example/color.go b/example/color.go index b0a32b1b..b3a4b738 100644 --- a/example/color.go +++ b/example/color.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE --marshal --lower --ptr +//go:generate ../bin/go-enum -f=$GOFILE --marshal --lower --ptr --mustparse package example diff --git a/example/color_enum.go b/example/color_enum.go index 96321e57..0d3e091b 100644 --- a/example/color_enum.go +++ b/example/color_enum.go @@ -86,7 +86,7 @@ var _ColorValue = map[string]Color{ strings.ToLower(_ColorName[64:79]): ColorRedOrangeBlue, } -// ParseColor attempts to convert a string to a Color +// ParseColor attempts to convert a string to a Color. func ParseColor(name string) (Color, error) { if x, ok := _ColorValue[name]; ok { return x, nil @@ -94,16 +94,25 @@ func ParseColor(name string) (Color, error) { return Color(0), fmt.Errorf("%s is not a valid Color", name) } +// MustParseColor converts a string to a Color, and panics if is not valid. +func MustParseColor(name string) Color { + val, err := ParseColor(name) + if err != nil { + panic(err) + } + return val +} + func (x Color) Ptr() *Color { return &x } -// MarshalText implements the text marshaller method +// MarshalText implements the text marshaller method. func (x Color) MarshalText() ([]byte, error) { return []byte(x.String()), nil } -// UnmarshalText implements the text unmarshaller method +// UnmarshalText implements the text unmarshaller method. func (x *Color) UnmarshalText(text []byte) error { name := string(text) tmp, err := ParseColor(name) diff --git a/example/color_test.go b/example/color_test.go index bb2ef35e..3c813c75 100644 --- a/example/color_test.go +++ b/example/color_test.go @@ -23,6 +23,12 @@ func TestColorString(t *testing.T) { assert.Equal(t, &x, Color(109).Ptr()) } +func TestColorMustParse(t *testing.T) { + x := `avocadogreen` + + assert.PanicsWithError(t, x+" is not a valid Color", func() { MustParseColor(x) }) +} + func TestColorUnmarshal(t *testing.T) { tests := []struct { name string diff --git a/example/commented_enum.go b/example/commented_enum.go index 5d3e0380..5c3b6b52 100644 --- a/example/commented_enum.go +++ b/example/commented_enum.go @@ -47,7 +47,7 @@ var _CommentedValue = map[string]Commented{ strings.ToLower(_CommentedName[12:18]): CommentedValue3, } -// ParseCommented attempts to convert a string to a Commented +// ParseCommented attempts to convert a string to a Commented. func ParseCommented(name string) (Commented, error) { if x, ok := _CommentedValue[name]; ok { return x, nil @@ -55,12 +55,12 @@ func ParseCommented(name string) (Commented, error) { return Commented(0), fmt.Errorf("%s is not a valid Commented", name) } -// MarshalText implements the text marshaller method +// MarshalText implements the text marshaller method. func (x Commented) MarshalText() ([]byte, error) { return []byte(x.String()), nil } -// UnmarshalText implements the text unmarshaller method +// UnmarshalText implements the text unmarshaller method. func (x *Commented) UnmarshalText(text []byte) error { name := string(text) tmp, err := ParseCommented(name) @@ -110,7 +110,7 @@ var _ComplexCommentedValue = map[string]ComplexCommented{ strings.ToLower(_ComplexCommentedName[12:18]): ComplexCommentedValue3, } -// ParseComplexCommented attempts to convert a string to a ComplexCommented +// ParseComplexCommented attempts to convert a string to a ComplexCommented. func ParseComplexCommented(name string) (ComplexCommented, error) { if x, ok := _ComplexCommentedValue[name]; ok { return x, nil @@ -118,12 +118,12 @@ func ParseComplexCommented(name string) (ComplexCommented, error) { return ComplexCommented(0), fmt.Errorf("%s is not a valid ComplexCommented", name) } -// MarshalText implements the text marshaller method +// MarshalText implements the text marshaller method. func (x ComplexCommented) MarshalText() ([]byte, error) { return []byte(x.String()), nil } -// UnmarshalText implements the text unmarshaller method +// UnmarshalText implements the text unmarshaller method. func (x *ComplexCommented) UnmarshalText(text []byte) error { name := string(text) tmp, err := ParseComplexCommented(name) diff --git a/example/custom_prefix_enum.go b/example/custom_prefix_enum.go index 081dd843..3e580a94 100644 --- a/example/custom_prefix_enum.go +++ b/example/custom_prefix_enum.go @@ -41,7 +41,7 @@ var _ProductValue = map[string]Product{ _ProductName[13:17]: AcmeIncProductGlue, } -// ParseProduct attempts to convert a string to a Product +// ParseProduct attempts to convert a string to a Product. func ParseProduct(name string) (Product, error) { if x, ok := _ProductValue[name]; ok { return x, nil diff --git a/example/example_enum.go b/example/example_enum.go index d9ae2ea8..0f3305bc 100644 --- a/example/example_enum.go +++ b/example/example_enum.go @@ -126,7 +126,7 @@ var _MakeValue = map[string]Make{ strings.ToLower(_MakeName[59:69]): MakeVolkswagon, } -// ParseMake attempts to convert a string to a Make +// ParseMake attempts to convert a string to a Make. func ParseMake(name string) (Make, error) { if x, ok := _MakeValue[name]; ok { return x, nil @@ -138,12 +138,12 @@ func ParseMake(name string) (Make, error) { return Make(0), fmt.Errorf("%s is not a valid Make, try [%s]", name, strings.Join(_MakeNames, ", ")) } -// MarshalText implements the text marshaller method +// MarshalText implements the text marshaller method. func (x Make) MarshalText() ([]byte, error) { return []byte(x.String()), nil } -// UnmarshalText implements the text unmarshaller method +// UnmarshalText implements the text unmarshaller method. func (x *Make) UnmarshalText(text []byte) error { name := string(text) tmp, err := ParseMake(name) @@ -236,7 +236,7 @@ var _NoZerosValue = map[string]NoZeros{ strings.ToLower(_NoZerosName[19:23]): NoZerosPpps, } -// ParseNoZeros attempts to convert a string to a NoZeros +// ParseNoZeros attempts to convert a string to a NoZeros. func ParseNoZeros(name string) (NoZeros, error) { if x, ok := _NoZerosValue[name]; ok { return x, nil @@ -248,12 +248,12 @@ func ParseNoZeros(name string) (NoZeros, error) { return NoZeros(0), fmt.Errorf("%s is not a valid NoZeros, try [%s]", name, strings.Join(_NoZerosNames, ", ")) } -// MarshalText implements the text marshaller method +// MarshalText implements the text marshaller method. func (x NoZeros) MarshalText() ([]byte, error) { return []byte(x.String()), nil } -// UnmarshalText implements the text unmarshaller method +// UnmarshalText implements the text unmarshaller method. func (x *NoZeros) UnmarshalText(text []byte) error { name := string(text) tmp, err := ParseNoZeros(name) diff --git a/example/force_lower.go b/example/force_lower.go new file mode 100644 index 00000000..44e895e6 --- /dev/null +++ b/example/force_lower.go @@ -0,0 +1,9 @@ +//go:generate ../bin/go-enum -f=$GOFILE --forcelower + +package example + +// ENUM( +// DataSwap, +// BootNode, +// ) +type ForceLowerType int diff --git a/example/force_lower_enum.go b/example/force_lower_enum.go new file mode 100644 index 00000000..e8853d46 --- /dev/null +++ b/example/force_lower_enum.go @@ -0,0 +1,46 @@ +// Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example + +package example + +import ( + "fmt" +) + +const ( + // ForceLowerTypeDataSwap is a ForceLowerType of type DataSwap. + ForceLowerTypeDataSwap ForceLowerType = iota + // ForceLowerTypeBootNode is a ForceLowerType of type BootNode. + ForceLowerTypeBootNode +) + +const _ForceLowerTypeName = "dataswapbootnode" + +var _ForceLowerTypeMap = map[ForceLowerType]string{ + ForceLowerTypeDataSwap: _ForceLowerTypeName[0:8], + ForceLowerTypeBootNode: _ForceLowerTypeName[8:16], +} + +// String implements the Stringer interface. +func (x ForceLowerType) String() string { + if str, ok := _ForceLowerTypeMap[x]; ok { + return str + } + return fmt.Sprintf("ForceLowerType(%d)", x) +} + +var _ForceLowerTypeValue = map[string]ForceLowerType{ + _ForceLowerTypeName[0:8]: ForceLowerTypeDataSwap, + _ForceLowerTypeName[8:16]: ForceLowerTypeBootNode, +} + +// ParseForceLowerType attempts to convert a string to a ForceLowerType. +func ParseForceLowerType(name string) (ForceLowerType, error) { + if x, ok := _ForceLowerTypeValue[name]; ok { + return x, nil + } + return ForceLowerType(0), fmt.Errorf("%s is not a valid ForceLowerType", name) +} diff --git a/example/force_lower_test.go b/example/force_lower_test.go new file mode 100644 index 00000000..6ec9460a --- /dev/null +++ b/example/force_lower_test.go @@ -0,0 +1,34 @@ +package example + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestForceLowerString(t *testing.T) { + + tests := map[string]struct { + input string + output ForceLowerType + }{ + "dataswap": { + input: `dataswap`, + output: ForceLowerTypeDataSwap, + }, + "bootnode": { + input: `bootnode`, + output: ForceLowerTypeBootNode, + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + output, err := ParseForceLowerType(tc.input) + assert.NoError(t, err) + assert.Equal(t, tc.output, output) + + assert.Equal(t, tc.input, output.String()) + }) + } +} diff --git a/example/globs/letter_enum.go b/example/globs/letter_enum.go index be1d4fd9..126593ad 100644 --- a/example/globs/letter_enum.go +++ b/example/globs/letter_enum.go @@ -133,7 +133,7 @@ var _LetterValue = map[string]Letter{ _LetterName[25:26]: LetterZ, } -// ParseLetter attempts to convert a string to a Letter +// ParseLetter attempts to convert a string to a Letter. func ParseLetter(name string) (Letter, error) { if x, ok := _LetterValue[name]; ok { return x, nil diff --git a/example/globs/number_enum.go b/example/globs/number_enum.go index 46982e1c..7a7183af 100644 --- a/example/globs/number_enum.go +++ b/example/globs/number_enum.go @@ -69,7 +69,7 @@ var _NumberValue = map[string]Number{ _NumberName[9:10]: Number9, } -// ParseNumber attempts to convert a string to a Number +// ParseNumber attempts to convert a string to a Number. func ParseNumber(name string) (Number, error) { if x, ok := _NumberValue[name]; ok { return x, nil diff --git a/example/sql_enum.go b/example/sql_enum.go index 2ecd2277..9f373649 100644 --- a/example/sql_enum.go +++ b/example/sql_enum.go @@ -49,7 +49,7 @@ var _ProjectStatusValue = map[string]ProjectStatus{ _ProjectStatusName[22:30]: ProjectStatusRejected, } -// ParseProjectStatus attempts to convert a string to a ProjectStatus +// ParseProjectStatus attempts to convert a string to a ProjectStatus. func ParseProjectStatus(name string) (ProjectStatus, error) { if x, ok := _ProjectStatusValue[name]; ok { return x, nil @@ -61,12 +61,12 @@ func (x ProjectStatus) Ptr() *ProjectStatus { return &x } -// MarshalText implements the text marshaller method +// MarshalText implements the text marshaller method. func (x ProjectStatus) MarshalText() ([]byte, error) { return []byte(x.String()), nil } -// UnmarshalText implements the text unmarshaller method +// UnmarshalText implements the text unmarshaller method. func (x *ProjectStatus) UnmarshalText(text []byte) error { name := string(text) tmp, err := ParseProjectStatus(name) diff --git a/example/sql_int_enum.go b/example/sql_int_enum.go index 04d68c87..4d404e24 100644 --- a/example/sql_int_enum.go +++ b/example/sql_int_enum.go @@ -52,7 +52,7 @@ var _ImageTypeValue = map[string]ImageType{ _ImageTypeName[14:17]: ImageTypeGif, } -// ParseImageType attempts to convert a string to a ImageType +// ParseImageType attempts to convert a string to a ImageType. func ParseImageType(name string) (ImageType, error) { if x, ok := _ImageTypeValue[name]; ok { return x, nil diff --git a/example/sql_str_enum.go b/example/sql_str_enum.go index 1c73e048..2184cc07 100644 --- a/example/sql_str_enum.go +++ b/example/sql_str_enum.go @@ -47,7 +47,7 @@ var _JobStateValue = map[string]JobState{ _JobStateName[26:32]: JobStateFailed, } -// ParseJobState attempts to convert a string to a JobState +// ParseJobState attempts to convert a string to a JobState. func ParseJobState(name string) (JobState, error) { if x, ok := _JobStateValue[name]; ok { return x, nil diff --git a/example/user_template_enum.go b/example/user_template_enum.go index 4783884b..e90c1524 100644 --- a/example/user_template_enum.go +++ b/example/user_template_enum.go @@ -41,7 +41,7 @@ var _OceanColorValue = map[string]OceanColor{ _OceanColorName[12:17]: OceanColorGreen, } -// ParseOceanColor attempts to convert a string to a OceanColor +// ParseOceanColor attempts to convert a string to a OceanColor. func ParseOceanColor(name string) (OceanColor, error) { if x, ok := _OceanColorValue[name]; ok { return x, nil diff --git a/generator/.snapshots/generator-TestCustomPrefixExampleFile b/generator/.snapshots/generator-TestCustomPrefixExampleFile index 92be2a10..ffa6185d 100644 --- a/generator/.snapshots/generator-TestCustomPrefixExampleFile +++ b/generator/.snapshots/generator-TestCustomPrefixExampleFile @@ -51,7 +51,7 @@ (string) (len=56) "\tstrings.ToLower(_AnimalName[6:10]): Custom_prefix_Fish,", (string) (len=1) "}", (string) "", - (string) (len=55) "// ParseAnimal attempts to convert a string to a Animal", + (string) (len=56) "// ParseAnimal attempts to convert a string to a Animal.", (string) (len=47) "func ParseAnimal(name string) (Animal, error) {", (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -63,12 +63,12 @@ (string) (len=10) "\treturn &x", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=47) "func (x Animal) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=51) "func (x *Animal) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=30) "\ttmp, err := ParseAnimal(name)", @@ -313,7 +313,7 @@ (string) (len=73) "\tstrings.ToLower(_CasesName[22:43]): Custom_prefix_AnotherLowerCaseStart,", (string) (len=1) "}", (string) "", - (string) (len=53) "// ParseCases attempts to convert a string to a Cases", + (string) (len=54) "// ParseCases attempts to convert a string to a Cases.", (string) (len=45) "func ParseCases(name string) (Cases, error) {", (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -325,12 +325,12 @@ (string) (len=10) "\treturn &x", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=46) "func (x Cases) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=50) "func (x *Cases) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=29) "\ttmp, err := ParseCases(name)", @@ -595,7 +595,7 @@ (string) (len=58) "\tstrings.ToLower(_ColorName[26:32]): Custom_prefix_Yellow,", (string) (len=1) "}", (string) "", - (string) (len=53) "// ParseColor attempts to convert a string to a Color", + (string) (len=54) "// ParseColor attempts to convert a string to a Color.", (string) (len=45) "func ParseColor(name string) (Color, error) {", (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -607,12 +607,12 @@ (string) (len=10) "\treturn &x", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=46) "func (x Color) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=50) "func (x *Color) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=29) "\ttmp, err := ParseColor(name)", @@ -878,7 +878,7 @@ (string) (len=69) "\tstrings.ToLower(_ColorWithCommentName[26:32]): Custom_prefix_Yellow,", (string) (len=1) "}", (string) "", - (string) (len=75) "// ParseColorWithComment attempts to convert a string to a ColorWithComment", + (string) (len=76) "// ParseColorWithComment attempts to convert a string to a ColorWithComment.", (string) (len=67) "func ParseColorWithComment(name string) (ColorWithComment, error) {", (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -890,12 +890,12 @@ (string) (len=10) "\treturn &x", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=57) "func (x ColorWithComment) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=61) "func (x *ColorWithComment) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=40) "\ttmp, err := ParseColorWithComment(name)", @@ -1161,7 +1161,7 @@ (string) (len=70) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): Custom_prefix_Yellow,", (string) (len=1) "}", (string) "", - (string) (len=77) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2", + (string) (len=78) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2.", (string) (len=69) "func ParseColorWithComment2(name string) (ColorWithComment2, error) {", (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -1173,12 +1173,12 @@ (string) (len=10) "\treturn &x", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=58) "func (x ColorWithComment2) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=62) "func (x *ColorWithComment2) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=41) "\ttmp, err := ParseColorWithComment2(name)", @@ -1460,7 +1460,7 @@ (string) (len=77) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): Custom_prefix_RedOrangeBlue,", (string) (len=1) "}", (string) "", - (string) (len=77) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3", + (string) (len=78) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3.", (string) (len=69) "func ParseColorWithComment3(name string) (ColorWithComment3, error) {", (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -1472,12 +1472,12 @@ (string) (len=10) "\treturn &x", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=58) "func (x ColorWithComment3) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=62) "func (x *ColorWithComment3) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=41) "\ttmp, err := ParseColorWithComment3(name)", @@ -1759,7 +1759,7 @@ (string) (len=73) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): Custom_prefix_RedOrange,", (string) (len=1) "}", (string) "", - (string) (len=77) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4", + (string) (len=78) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4.", (string) (len=69) "func ParseColorWithComment4(name string) (ColorWithComment4, error) {", (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -1771,12 +1771,12 @@ (string) (len=10) "\treturn &x", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=58) "func (x ColorWithComment4) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=62) "func (x *ColorWithComment4) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=41) "\ttmp, err := ParseColorWithComment4(name)", @@ -2025,7 +2025,7 @@ (string) (len=56) "\tstrings.ToLower(_ModelName[11:15]): Custom_prefix_Ford,", (string) (len=1) "}", (string) "", - (string) (len=53) "// ParseModel attempts to convert a string to a Model", + (string) (len=54) "// ParseModel attempts to convert a string to a Model.", (string) (len=45) "func ParseModel(name string) (Model, error) {", (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -2037,12 +2037,12 @@ (string) (len=10) "\treturn &x", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=46) "func (x Model) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=50) "func (x *Model) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=29) "\ttmp, err := ParseModel(name)", @@ -2307,7 +2307,7 @@ (string) (len=69) "\tstrings.ToLower(_SanitizingName[72:86]): Custom_prefix_EndingHyphen,", (string) (len=1) "}", (string) "", - (string) (len=63) "// ParseSanitizing attempts to convert a string to a Sanitizing", + (string) (len=64) "// ParseSanitizing attempts to convert a string to a Sanitizing.", (string) (len=55) "func ParseSanitizing(name string) (Sanitizing, error) {", (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -2319,12 +2319,12 @@ (string) (len=10) "\treturn &x", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=51) "func (x Sanitizing) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=55) "func (x *Sanitizing) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=34) "\ttmp, err := ParseSanitizing(name)", @@ -2569,7 +2569,7 @@ (string) (len=56) "\tstrings.ToLower(_SodaName[9:15]): Custom_prefix_MtnDew,", (string) (len=1) "}", (string) "", - (string) (len=51) "// ParseSoda attempts to convert a string to a Soda", + (string) (len=52) "// ParseSoda attempts to convert a string to a Soda.", (string) (len=43) "func ParseSoda(name string) (Soda, error) {", (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -2581,12 +2581,12 @@ (string) (len=10) "\treturn &x", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=45) "func (x Soda) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=49) "func (x *Soda) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=28) "\ttmp, err := ParseSoda(name)", @@ -2826,7 +2826,7 @@ (string) (len=66) "\tstrings.ToLower(_StartNotZeroName[12:19]): Custom_prefix_NextNum,", (string) (len=1) "}", (string) "", - (string) (len=67) "// ParseStartNotZero attempts to convert a string to a StartNotZero", + (string) (len=68) "// ParseStartNotZero attempts to convert a string to a StartNotZero.", (string) (len=59) "func ParseStartNotZero(name string) (StartNotZero, error) {", (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -2838,12 +2838,12 @@ (string) (len=10) "\treturn &x", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=53) "func (x StartNotZero) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=57) "func (x *StartNotZero) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=36) "\ttmp, err := ParseStartNotZero(name)", diff --git a/generator/.snapshots/generator-TestExampleFile b/generator/.snapshots/generator-TestExampleFile index f3d738ee..4a3028da 100644 --- a/generator/.snapshots/generator-TestExampleFile +++ b/generator/.snapshots/generator-TestExampleFile @@ -62,7 +62,7 @@ (string) (len=48) "\tstrings.ToLower(_AnimalName[6:10]): AnimalFish,", (string) (len=1) "}", (string) "", - (string) (len=55) "// ParseAnimal attempts to convert a string to a Animal", + (string) (len=56) "// ParseAnimal attempts to convert a string to a Animal.", (string) (len=47) "func ParseAnimal(name string) (Animal, error) {", (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -74,12 +74,12 @@ (string) (len=107) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal, try [%s]\", name, strings.Join(_AnimalNames, \", \"))", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=47) "func (x Animal) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=51) "func (x *Animal) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=30) "\ttmp, err := ParseAnimal(name)", @@ -210,7 +210,7 @@ (string) (len=64) "\tstrings.ToLower(_CasesName[22:43]): CasesAnotherLowerCaseStart,", (string) (len=1) "}", (string) "", - (string) (len=53) "// ParseCases attempts to convert a string to a Cases", + (string) (len=54) "// ParseCases attempts to convert a string to a Cases.", (string) (len=45) "func ParseCases(name string) (Cases, error) {", (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -222,12 +222,12 @@ (string) (len=104) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases, try [%s]\", name, strings.Join(_CasesNames, \", \"))", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=46) "func (x Cases) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=50) "func (x *Cases) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=29) "\ttmp, err := ParseCases(name)", @@ -382,7 +382,7 @@ (string) (len=49) "\tstrings.ToLower(_ColorName[26:32]): ColorYellow,", (string) (len=1) "}", (string) "", - (string) (len=53) "// ParseColor attempts to convert a string to a Color", + (string) (len=54) "// ParseColor attempts to convert a string to a Color.", (string) (len=45) "func ParseColor(name string) (Color, error) {", (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -394,12 +394,12 @@ (string) (len=104) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color, try [%s]\", name, strings.Join(_ColorNames, \", \"))", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=46) "func (x Color) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=50) "func (x *Color) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=29) "\ttmp, err := ParseColor(name)", @@ -555,7 +555,7 @@ (string) (len=71) "\tstrings.ToLower(_ColorWithCommentName[26:32]): ColorWithCommentYellow,", (string) (len=1) "}", (string) "", - (string) (len=75) "// ParseColorWithComment attempts to convert a string to a ColorWithComment", + (string) (len=76) "// ParseColorWithComment attempts to convert a string to a ColorWithComment.", (string) (len=67) "func ParseColorWithComment(name string) (ColorWithComment, error) {", (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -567,12 +567,12 @@ (string) (len=137) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment, try [%s]\", name, strings.Join(_ColorWithCommentNames, \", \"))", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=57) "func (x ColorWithComment) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=61) "func (x *ColorWithComment) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=40) "\ttmp, err := ParseColorWithComment(name)", @@ -728,7 +728,7 @@ (string) (len=73) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): ColorWithComment2Yellow,", (string) (len=1) "}", (string) "", - (string) (len=77) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2", + (string) (len=78) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2.", (string) (len=69) "func ParseColorWithComment2(name string) (ColorWithComment2, error) {", (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -740,12 +740,12 @@ (string) (len=140) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2, try [%s]\", name, strings.Join(_ColorWithComment2Names, \", \"))", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=58) "func (x ColorWithComment2) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=62) "func (x *ColorWithComment2) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=41) "\ttmp, err := ParseColorWithComment2(name)", @@ -920,7 +920,7 @@ (string) (len=80) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): ColorWithComment3RedOrangeBlue,", (string) (len=1) "}", (string) "", - (string) (len=77) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3", + (string) (len=78) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3.", (string) (len=69) "func ParseColorWithComment3(name string) (ColorWithComment3, error) {", (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -932,12 +932,12 @@ (string) (len=140) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3, try [%s]\", name, strings.Join(_ColorWithComment3Names, \", \"))", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=58) "func (x ColorWithComment3) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=62) "func (x *ColorWithComment3) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=41) "\ttmp, err := ParseColorWithComment3(name)", @@ -1111,7 +1111,7 @@ (string) (len=76) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): ColorWithComment4RedOrange,", (string) (len=1) "}", (string) "", - (string) (len=77) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4", + (string) (len=78) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4.", (string) (len=69) "func ParseColorWithComment4(name string) (ColorWithComment4, error) {", (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -1123,12 +1123,12 @@ (string) (len=140) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4, try [%s]\", name, strings.Join(_ColorWithComment4Names, \", \"))", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=58) "func (x ColorWithComment4) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=62) "func (x *ColorWithComment4) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=41) "\ttmp, err := ParseColorWithComment4(name)", @@ -1263,7 +1263,7 @@ (string) (len=47) "\tstrings.ToLower(_ModelName[11:15]): ModelFord,", (string) (len=1) "}", (string) "", - (string) (len=53) "// ParseModel attempts to convert a string to a Model", + (string) (len=54) "// ParseModel attempts to convert a string to a Model.", (string) (len=45) "func ParseModel(name string) (Model, error) {", (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -1275,12 +1275,12 @@ (string) (len=104) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model, try [%s]\", name, strings.Join(_ModelNames, \", \"))", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=46) "func (x Model) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=50) "func (x *Model) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=29) "\ttmp, err := ParseModel(name)", @@ -1435,7 +1435,7 @@ (string) (len=65) "\tstrings.ToLower(_SanitizingName[72:86]): SanitizingEndingHyphen,", (string) (len=1) "}", (string) "", - (string) (len=63) "// ParseSanitizing attempts to convert a string to a Sanitizing", + (string) (len=64) "// ParseSanitizing attempts to convert a string to a Sanitizing.", (string) (len=55) "func ParseSanitizing(name string) (Sanitizing, error) {", (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -1447,12 +1447,12 @@ (string) (len=119) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing, try [%s]\", name, strings.Join(_SanitizingNames, \", \"))", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=51) "func (x Sanitizing) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=55) "func (x *Sanitizing) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=34) "\ttmp, err := ParseSanitizing(name)", @@ -1583,7 +1583,7 @@ (string) (len=46) "\tstrings.ToLower(_SodaName[9:15]): SodaMtnDew,", (string) (len=1) "}", (string) "", - (string) (len=51) "// ParseSoda attempts to convert a string to a Soda", + (string) (len=52) "// ParseSoda attempts to convert a string to a Soda.", (string) (len=43) "func ParseSoda(name string) (Soda, error) {", (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -1595,12 +1595,12 @@ (string) (len=101) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda, try [%s]\", name, strings.Join(_SodaNames, \", \"))", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=45) "func (x Soda) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=49) "func (x *Soda) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=28) "\ttmp, err := ParseSoda(name)", @@ -1725,7 +1725,7 @@ (string) (len=64) "\tstrings.ToLower(_StartNotZeroName[12:19]): StartNotZeroNextNum,", (string) (len=1) "}", (string) "", - (string) (len=67) "// ParseStartNotZero attempts to convert a string to a StartNotZero", + (string) (len=68) "// ParseStartNotZero attempts to convert a string to a StartNotZero.", (string) (len=59) "func ParseStartNotZero(name string) (StartNotZero, error) {", (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -1737,12 +1737,12 @@ (string) (len=125) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero, try [%s]\", name, strings.Join(_StartNotZeroNames, \", \"))", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=53) "func (x StartNotZero) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=57) "func (x *StartNotZero) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=36) "\ttmp, err := ParseStartNotZero(name)", diff --git a/generator/.snapshots/generator-TestNoPrefixExampleFile b/generator/.snapshots/generator-TestNoPrefixExampleFile index 7edbe7fc..03038784 100644 --- a/generator/.snapshots/generator-TestNoPrefixExampleFile +++ b/generator/.snapshots/generator-TestNoPrefixExampleFile @@ -46,7 +46,7 @@ (string) (len=42) "\tstrings.ToLower(_AnimalName[6:10]): Fish,", (string) (len=1) "}", (string) "", - (string) (len=55) "// ParseAnimal attempts to convert a string to a Animal", + (string) (len=56) "// ParseAnimal attempts to convert a string to a Animal.", (string) (len=47) "func ParseAnimal(name string) (Animal, error) {", (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -54,12 +54,12 @@ (string) (len=63) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=47) "func (x Animal) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=51) "func (x *Animal) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=30) "\ttmp, err := ParseAnimal(name)", @@ -121,7 +121,7 @@ (string) (len=59) "\tstrings.ToLower(_CasesName[22:43]): AnotherLowerCaseStart,", (string) (len=1) "}", (string) "", - (string) (len=53) "// ParseCases attempts to convert a string to a Cases", + (string) (len=54) "// ParseCases attempts to convert a string to a Cases.", (string) (len=45) "func ParseCases(name string) (Cases, error) {", (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -129,12 +129,12 @@ (string) (len=61) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=46) "func (x Cases) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=50) "func (x *Cases) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=29) "\ttmp, err := ParseCases(name)", @@ -216,7 +216,7 @@ (string) (len=44) "\tstrings.ToLower(_ColorName[26:32]): Yellow,", (string) (len=1) "}", (string) "", - (string) (len=53) "// ParseColor attempts to convert a string to a Color", + (string) (len=54) "// ParseColor attempts to convert a string to a Color.", (string) (len=45) "func ParseColor(name string) (Color, error) {", (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -224,12 +224,12 @@ (string) (len=61) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=46) "func (x Color) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=50) "func (x *Color) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=29) "\ttmp, err := ParseColor(name)", @@ -312,7 +312,7 @@ (string) (len=55) "\tstrings.ToLower(_ColorWithCommentName[26:32]): Yellow,", (string) (len=1) "}", (string) "", - (string) (len=75) "// ParseColorWithComment attempts to convert a string to a ColorWithComment", + (string) (len=76) "// ParseColorWithComment attempts to convert a string to a ColorWithComment.", (string) (len=67) "func ParseColorWithComment(name string) (ColorWithComment, error) {", (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -320,12 +320,12 @@ (string) (len=83) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=57) "func (x ColorWithComment) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=61) "func (x *ColorWithComment) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=40) "\ttmp, err := ParseColorWithComment(name)", @@ -408,7 +408,7 @@ (string) (len=56) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): Yellow,", (string) (len=1) "}", (string) "", - (string) (len=77) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2", + (string) (len=78) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2.", (string) (len=69) "func ParseColorWithComment2(name string) (ColorWithComment2, error) {", (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -416,12 +416,12 @@ (string) (len=85) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=58) "func (x ColorWithComment2) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=62) "func (x *ColorWithComment2) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=41) "\ttmp, err := ParseColorWithComment2(name)", @@ -520,7 +520,7 @@ (string) (len=63) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): RedOrangeBlue,", (string) (len=1) "}", (string) "", - (string) (len=77) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3", + (string) (len=78) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3.", (string) (len=69) "func ParseColorWithComment3(name string) (ColorWithComment3, error) {", (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -528,12 +528,12 @@ (string) (len=85) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=58) "func (x ColorWithComment3) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=62) "func (x *ColorWithComment3) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=41) "\ttmp, err := ParseColorWithComment3(name)", @@ -632,7 +632,7 @@ (string) (len=59) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): RedOrange,", (string) (len=1) "}", (string) "", - (string) (len=77) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4", + (string) (len=78) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4.", (string) (len=69) "func ParseColorWithComment4(name string) (ColorWithComment4, error) {", (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -640,12 +640,12 @@ (string) (len=85) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=58) "func (x ColorWithComment4) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=62) "func (x *ColorWithComment4) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=41) "\ttmp, err := ParseColorWithComment4(name)", @@ -711,7 +711,7 @@ (string) (len=42) "\tstrings.ToLower(_ModelName[11:15]): Ford,", (string) (len=1) "}", (string) "", - (string) (len=53) "// ParseModel attempts to convert a string to a Model", + (string) (len=54) "// ParseModel attempts to convert a string to a Model.", (string) (len=45) "func ParseModel(name string) (Model, error) {", (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -719,12 +719,12 @@ (string) (len=61) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=46) "func (x Model) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=50) "func (x *Model) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=29) "\ttmp, err := ParseModel(name)", @@ -806,7 +806,7 @@ (string) (len=55) "\tstrings.ToLower(_SanitizingName[72:86]): EndingHyphen,", (string) (len=1) "}", (string) "", - (string) (len=63) "// ParseSanitizing attempts to convert a string to a Sanitizing", + (string) (len=64) "// ParseSanitizing attempts to convert a string to a Sanitizing.", (string) (len=55) "func ParseSanitizing(name string) (Sanitizing, error) {", (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -814,12 +814,12 @@ (string) (len=71) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=51) "func (x Sanitizing) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=55) "func (x *Sanitizing) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=34) "\ttmp, err := ParseSanitizing(name)", @@ -881,7 +881,7 @@ (string) (len=42) "\tstrings.ToLower(_SodaName[9:15]): MtnDew,", (string) (len=1) "}", (string) "", - (string) (len=51) "// ParseSoda attempts to convert a string to a Soda", + (string) (len=52) "// ParseSoda attempts to convert a string to a Soda.", (string) (len=43) "func ParseSoda(name string) (Soda, error) {", (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -889,12 +889,12 @@ (string) (len=59) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=45) "func (x Soda) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=49) "func (x *Soda) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=28) "\ttmp, err := ParseSoda(name)", @@ -951,7 +951,7 @@ (string) (len=52) "\tstrings.ToLower(_StartNotZeroName[12:19]): NextNum,", (string) (len=1) "}", (string) "", - (string) (len=67) "// ParseStartNotZero attempts to convert a string to a StartNotZero", + (string) (len=68) "// ParseStartNotZero attempts to convert a string to a StartNotZero.", (string) (len=59) "func ParseStartNotZero(name string) (StartNotZero, error) {", (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -959,12 +959,12 @@ (string) (len=75) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=53) "func (x StartNotZero) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=57) "func (x *StartNotZero) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=36) "\ttmp, err := ParseStartNotZero(name)", diff --git a/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel b/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel index aa507325..6497e6ba 100644 --- a/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel +++ b/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel @@ -46,7 +46,7 @@ (string) (len=42) "\tstrings.ToLower(_AnimalName[6:10]): Fish,", (string) (len=1) "}", (string) "", - (string) (len=55) "// ParseAnimal attempts to convert a string to a Animal", + (string) (len=56) "// ParseAnimal attempts to convert a string to a Animal.", (string) (len=47) "func ParseAnimal(name string) (Animal, error) {", (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -54,12 +54,12 @@ (string) (len=63) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=47) "func (x Animal) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=51) "func (x *Animal) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=30) "\ttmp, err := ParseAnimal(name)", @@ -121,7 +121,7 @@ (string) (len=59) "\tstrings.ToLower(_CasesName[22:43]): AnotherLowerCaseStart,", (string) (len=1) "}", (string) "", - (string) (len=53) "// ParseCases attempts to convert a string to a Cases", + (string) (len=54) "// ParseCases attempts to convert a string to a Cases.", (string) (len=45) "func ParseCases(name string) (Cases, error) {", (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -129,12 +129,12 @@ (string) (len=61) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=46) "func (x Cases) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=50) "func (x *Cases) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=29) "\ttmp, err := ParseCases(name)", @@ -216,7 +216,7 @@ (string) (len=44) "\tstrings.ToLower(_ColorName[26:32]): Yellow,", (string) (len=1) "}", (string) "", - (string) (len=53) "// ParseColor attempts to convert a string to a Color", + (string) (len=54) "// ParseColor attempts to convert a string to a Color.", (string) (len=45) "func ParseColor(name string) (Color, error) {", (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -224,12 +224,12 @@ (string) (len=61) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=46) "func (x Color) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=50) "func (x *Color) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=29) "\ttmp, err := ParseColor(name)", @@ -312,7 +312,7 @@ (string) (len=55) "\tstrings.ToLower(_ColorWithCommentName[26:32]): Yellow,", (string) (len=1) "}", (string) "", - (string) (len=75) "// ParseColorWithComment attempts to convert a string to a ColorWithComment", + (string) (len=76) "// ParseColorWithComment attempts to convert a string to a ColorWithComment.", (string) (len=67) "func ParseColorWithComment(name string) (ColorWithComment, error) {", (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -320,12 +320,12 @@ (string) (len=83) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=57) "func (x ColorWithComment) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=61) "func (x *ColorWithComment) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=40) "\ttmp, err := ParseColorWithComment(name)", @@ -408,7 +408,7 @@ (string) (len=56) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): Yellow,", (string) (len=1) "}", (string) "", - (string) (len=77) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2", + (string) (len=78) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2.", (string) (len=69) "func ParseColorWithComment2(name string) (ColorWithComment2, error) {", (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -416,12 +416,12 @@ (string) (len=85) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=58) "func (x ColorWithComment2) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=62) "func (x *ColorWithComment2) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=41) "\ttmp, err := ParseColorWithComment2(name)", @@ -520,7 +520,7 @@ (string) (len=63) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): RedOrangeBlue,", (string) (len=1) "}", (string) "", - (string) (len=77) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3", + (string) (len=78) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3.", (string) (len=69) "func ParseColorWithComment3(name string) (ColorWithComment3, error) {", (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -528,12 +528,12 @@ (string) (len=85) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=58) "func (x ColorWithComment3) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=62) "func (x *ColorWithComment3) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=41) "\ttmp, err := ParseColorWithComment3(name)", @@ -632,7 +632,7 @@ (string) (len=59) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): RedOrange,", (string) (len=1) "}", (string) "", - (string) (len=77) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4", + (string) (len=78) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4.", (string) (len=69) "func ParseColorWithComment4(name string) (ColorWithComment4, error) {", (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -640,12 +640,12 @@ (string) (len=85) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=58) "func (x ColorWithComment4) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=62) "func (x *ColorWithComment4) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=41) "\ttmp, err := ParseColorWithComment4(name)", @@ -711,7 +711,7 @@ (string) (len=42) "\tstrings.ToLower(_ModelName[11:15]): Ford,", (string) (len=1) "}", (string) "", - (string) (len=53) "// ParseModel attempts to convert a string to a Model", + (string) (len=54) "// ParseModel attempts to convert a string to a Model.", (string) (len=45) "func ParseModel(name string) (Model, error) {", (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -719,12 +719,12 @@ (string) (len=61) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=46) "func (x Model) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=50) "func (x *Model) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=29) "\ttmp, err := ParseModel(name)", @@ -806,7 +806,7 @@ (string) (len=55) "\tstrings.ToLower(_SanitizingName[72:86]): EndingHyphen,", (string) (len=1) "}", (string) "", - (string) (len=63) "// ParseSanitizing attempts to convert a string to a Sanitizing", + (string) (len=64) "// ParseSanitizing attempts to convert a string to a Sanitizing.", (string) (len=55) "func ParseSanitizing(name string) (Sanitizing, error) {", (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -814,12 +814,12 @@ (string) (len=71) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=51) "func (x Sanitizing) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=55) "func (x *Sanitizing) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=34) "\ttmp, err := ParseSanitizing(name)", @@ -881,7 +881,7 @@ (string) (len=42) "\tstrings.ToLower(_SodaName[9:15]): MtnDew,", (string) (len=1) "}", (string) "", - (string) (len=51) "// ParseSoda attempts to convert a string to a Soda", + (string) (len=52) "// ParseSoda attempts to convert a string to a Soda.", (string) (len=43) "func ParseSoda(name string) (Soda, error) {", (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -889,12 +889,12 @@ (string) (len=59) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=45) "func (x Soda) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=49) "func (x *Soda) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=28) "\ttmp, err := ParseSoda(name)", @@ -951,7 +951,7 @@ (string) (len=52) "\tstrings.ToLower(_StartNotZeroName[12:19]): NextNum,", (string) (len=1) "}", (string) "", - (string) (len=67) "// ParseStartNotZero attempts to convert a string to a StartNotZero", + (string) (len=68) "// ParseStartNotZero attempts to convert a string to a StartNotZero.", (string) (len=59) "func ParseStartNotZero(name string) (StartNotZero, error) {", (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", @@ -959,12 +959,12 @@ (string) (len=75) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero\", name)", (string) (len=1) "}", (string) "", - (string) (len=52) "// MarshalText implements the text marshaller method", + (string) (len=53) "// MarshalText implements the text marshaller method.", (string) (len=53) "func (x StartNotZero) MarshalText() ([]byte, error) {", (string) (len=31) "\treturn []byte(x.String()), nil", (string) (len=1) "}", (string) "", - (string) (len=56) "// UnmarshalText implements the text unmarshaller method", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", (string) (len=57) "func (x *StartNotZero) UnmarshalText(text []byte) error {", (string) (len=21) "\tname := string(text)", (string) (len=36) "\ttmp, err := ParseStartNotZero(name)", diff --git a/generator/enum.tmpl b/generator/enum.tmpl index 0d512836..4ac6c304 100644 --- a/generator/enum.tmpl +++ b/generator/enum.tmpl @@ -40,7 +40,7 @@ func (x {{.enum.Name}}) String() string { var _{{.enum.Name}}Value = {{ unmapify .enum .lowercase }} -// Parse{{.enum.Name}} attempts to convert a string to a {{.enum.Name}} +// Parse{{.enum.Name}} attempts to convert a string to a {{.enum.Name}}. func Parse{{.enum.Name}}(name string) ({{.enum.Name}}, error) { if x, ok := _{{.enum.Name}}Value[name]; ok { return x, nil @@ -56,6 +56,17 @@ func Parse{{.enum.Name}}(name string) ({{.enum.Name}}, error) { {{- end}} } +{{ if .mustparse }} +// MustParse{{.enum.Name}} converts a string to a {{.enum.Name}}, and panics if is not valid. +func MustParse{{.enum.Name}}(name string) {{.enum.Name}} { + val, err := Parse{{.enum.Name}}(name) + if err != nil { + panic(err) + } + return val +} +{{end}} + {{ if .ptr }} func (x {{.enum.Name}}) Ptr() *{{.enum.Name}} { return &x @@ -63,12 +74,12 @@ func (x {{.enum.Name}}) Ptr() *{{.enum.Name}} { {{end}} {{ if .marshal }} -// MarshalText implements the text marshaller method +// MarshalText implements the text marshaller method. func (x {{.enum.Name}}) MarshalText() ([]byte, error) { return []byte(x.String()), nil } -// UnmarshalText implements the text unmarshaller method +// UnmarshalText implements the text unmarshaller method. func (x *{{.enum.Name}}) UnmarshalText(text []byte) error { name := string(text) tmp, err := Parse{{.enum.Name}}(name) @@ -315,7 +326,7 @@ func (n *Null{{.enum.Name}}Str) UnmarshalJSON(b []byte) error { {{- define "stringer"}} -const _{{.enum.Name}}Name = "{{ stringify .enum }}" +const _{{.enum.Name}}Name = "{{ stringify .enum .forcelower }}" {{ if .names }}var _{{.enum.Name}}Names = {{namify .enum}} diff --git a/generator/generator.go b/generator/generator.go index 2887d0ae..b8329a67 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -49,6 +49,8 @@ type Generator struct { sqlNullInt bool sqlNullStr bool ptr bool + mustParse bool + forceLower bool } // Enum holds data for a discovered enum in the parsed source @@ -172,6 +174,18 @@ func (g *Generator) WithSQLNullStr() *Generator { return g } +// WithMustParse is used to add a method `MustParse` that will panic on failure. +func (g *Generator) WithMustParse() *Generator { + g.mustParse = true + return g +} + +// WithForceLower is used to force enums names to lower case while keeping variable names the same. +func (g *Generator) WithForceLower() *Generator { + g.forceLower = true + return g +} + // ParseAliases is used to add aliases to replace during name sanitization. func ParseAliases(aliases []string) error { aliasMap := map[string]string{} @@ -266,6 +280,8 @@ func (g *Generator) Generate(f *ast.File) ([]byte, error) { "ptr": g.ptr, "sqlnullint": g.sqlNullInt, "sqlnullstr": g.sqlNullStr, + "mustparse": g.mustParse, + "forcelower": g.forceLower, } err = g.t.ExecuteTemplate(vBuff, "enum", data) diff --git a/generator/template_funcs.go b/generator/template_funcs.go index a8291081..359c5b45 100644 --- a/generator/template_funcs.go +++ b/generator/template_funcs.go @@ -2,13 +2,18 @@ package generator import ( "fmt" + "strings" ) // Stringify returns a string that is all of the enum value names concatenated without a separator -func Stringify(e Enum) (ret string, err error) { +func Stringify(e Enum, forceLower bool) (ret string, err error) { for _, val := range e.Values { if val.Name != skipHolder { - ret = ret + val.RawName + next := val.RawName + if forceLower { + next = strings.ToLower(next) + } + ret = ret + next } } return diff --git a/main.go b/main.go index 5507186f..83126897 100644 --- a/main.go +++ b/main.go @@ -36,6 +36,8 @@ type rootT struct { Ptr bool TemplateFileNames cli.StringSlice Aliases cli.StringSlice + MustParse bool + ForceLower bool } func main() { @@ -131,6 +133,16 @@ func main() { Usage: "Adds or replaces aliases for a non alphanumeric value that needs to be accounted for. [Format should be \"key:value,key2:value2\", or specify multiple entries, or both!]", Destination: &argv.Aliases, }, + &cli.BoolFlag{ + Name: "mustparse", + Usage: "Adds a Must version of the Parse that will panic on failure.", + Destination: &argv.MustParse, + }, + &cli.BoolFlag{ + Name: "forcelower", + Usage: "Forces a camel cased comment to generate lowercased names.", + Destination: &argv.ForceLower, + }, }, Action: func(ctx *cli.Context) error { if err := generator.ParseAliases(argv.Aliases.Value()); err != nil { @@ -180,6 +192,12 @@ func main() { if argv.SQLNullStr { g.WithSQLNullStr() } + if argv.MustParse { + g.WithMustParse() + } + if argv.ForceLower { + g.WithForceLower() + } if templates := []string(argv.TemplateFileNames.Value()); len(templates) > 0 { for _, t := range templates { if fn, err := globFilenames(t); err != nil { From 316f98376114b1800a5f301e4c08ef0d35271672 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Feb 2022 05:52:17 -0700 Subject: [PATCH 23/91] Bump golang.org/x/tools from 0.1.8 to 0.1.9 (#81) Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.1.8 to 0.1.9. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.1.8...v0.1.9) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 316760e4..5685e154 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/stretchr/testify v1.7.0 github.com/urfave/cli/v2 v2.3.0 golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf // indirect - golang.org/x/tools v0.1.8 + golang.org/x/tools v0.1.9 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go.sum b/go.sum index 9199d66e..0e81d542 100644 --- a/go.sum +++ b/go.sum @@ -94,8 +94,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.8 h1:P1HhGGuLW4aAclzjtmJdf0mJOjVUZUzOTqkAkWL+l6w= -golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.9 h1:j9KsMiaP1c3B0OTQGth0/k+miLGTgLsAFUCrF2vLcF8= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= From 19344012b8f41c4580f97539b1a744ffbca412b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Feb 2022 05:55:15 -0700 Subject: [PATCH 24/91] Bump github.com/kevinburke/go-bindata (#82) Bumps [github.com/kevinburke/go-bindata](https://github.com/kevinburke/go-bindata) from 3.22.0+incompatible to 3.23.0+incompatible. - [Release notes](https://github.com/kevinburke/go-bindata/releases) - [Changelog](https://github.com/kevinburke/go-bindata/blob/master/CHANGELOG.md) - [Commits](https://github.com/kevinburke/go-bindata/compare/v3.22.0...v3.23.0) --- updated-dependencies: - dependency-name: github.com/kevinburke/go-bindata dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5685e154..33a80251 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/google/uuid v1.2.0 // indirect github.com/huandu/xstrings v1.3.2 // indirect github.com/imdario/mergo v0.3.12 // indirect - github.com/kevinburke/go-bindata v3.22.0+incompatible + github.com/kevinburke/go-bindata v3.23.0+incompatible github.com/kr/text v0.2.0 // indirect github.com/labstack/gommon v0.3.1 github.com/mattn/goveralls v0.0.11 diff --git a/go.sum b/go.sum index 0e81d542..eea0cf2e 100644 --- a/go.sum +++ b/go.sum @@ -22,8 +22,8 @@ github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/kevinburke/go-bindata v3.22.0+incompatible h1:/JmqEhIWQ7GRScV0WjX/0tqBrC5D21ALg0H0U/KZ/ts= -github.com/kevinburke/go-bindata v3.22.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= +github.com/kevinburke/go-bindata v3.23.0+incompatible h1:rqNOXZlqrYhMVVAsQx8wuc+LaA73YcfbQ407wAykyS8= +github.com/kevinburke/go-bindata v3.23.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= From e477e74e05be2411bb0b218a4637de6905e8cd8c Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Thu, 10 Feb 2022 17:04:20 -0700 Subject: [PATCH 25/91] ensure test works (#84) * ensure test works * update the assets --- .github/workflows/build_and_test.yml | 3 +++ Makefile | 10 ++++++++++ generator/assets/assets.go | 6 +++--- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 9edf7637..4b20f343 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -43,3 +43,6 @@ jobs: with: name: coverage path: coverage.* + + - name: Assert no changes + run: make assert-no-changes diff --git a/Makefile b/Makefile index 230ad113..ae6caf62 100644 --- a/Makefile +++ b/Makefile @@ -67,6 +67,13 @@ clean: rm -rf bin/ rm -rf dist/ +.PHONY: assert-no-changes +assert-no-changes: + @if [ -n "$(shell git status --porcelain)" ]; then \ + echo "git changes found: $(shell git status --porcelain)"; \ + exit 1; \ + fi + .PHONY: generate generate: $(GO) generate $(PACKAGES) @@ -94,3 +101,6 @@ bin/goveralls: go.sum bin/go-bindata: go.sum $(call goinstall,github.com/kevinburke/go-bindata/go-bindata) + +generate1_15: generator/assets/assets.go generator/enum.tmpl + docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:1.15 -c 'make clean $(GOBINDATA) && $(GO) generate ./generator && make clean' diff --git a/generator/assets/assets.go b/generator/assets/assets.go index 01647f8b..792cd195 100644 --- a/generator/assets/assets.go +++ b/generator/assets/assets.go @@ -1,6 +1,6 @@ // Code generated by go-bindata. DO NOT EDIT. // sources: -// enum.tmpl (8.354kB) +// enum.tmpl (8.662kB) package assets @@ -69,7 +69,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _enumTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x59\xdf\x8f\xdb\xb8\xf1\x7f\xb6\xfe\x8a\x89\x91\xdc\x49\xfe\x3a\x72\xbe\x68\xd1\x87\x1c\xf6\x21\x4d\xd2\xe0\x0e\xcd\x26\xe8\xa6\x79\x59\x04\x01\x2d\x8d\xd6\xbc\x95\x48\x1d\x49\xd9\x72\x55\xfd\xef\xc5\x90\x94\x2c\x6b\xe5\xdd\x6d\xba\x7b\x41\xd1\x17\xc3\x12\x87\xc3\xf9\xcc\xef\xa1\x9a\xe6\x39\xa4\x98\x71\x81\x30\xdf\x20\x4b\x51\xcd\xdb\x36\x58\xad\xe0\xb5\x4c\x11\xae\x50\xa0\x62\x06\x53\x58\xef\xe1\x4a\x3e\x47\x51\x15\xb4\xf8\x19\x95\xe6\x52\xbc\x84\xa6\x81\x78\xeb\x1e\xc0\xed\xfb\x1b\x6e\xf9\x61\x4d\xf9\x27\xbf\xf8\xe7\x8a\xe7\x29\xbc\x61\x06\xdd\xf2\x9a\x9e\xe9\xd1\xaf\xbf\xf9\x00\xe7\x1f\x3e\xc1\xdb\x37\x3f\x7f\x7a\x12\x04\x25\x4b\xae\xd9\x15\x42\xd3\xc4\xfe\x6f\xdb\x06\x01\x2f\x4a\xa9\x0c\x84\x01\x00\xc0\x3c\x2b\xcc\x3c\x88\x82\xa6\x41\x91\xc2\x73\x5a\x1f\x22\x22\x79\x09\x4f\x22\x85\xa6\x2d\xb4\xf6\x94\x5e\x9e\xb3\x02\xe1\xe5\x19\xc4\xf4\x10\xdb\x27\xda\x6c\xd7\xb7\x4c\x69\x5a\x4b\x79\x62\x60\x9e\x33\x6d\x64\x96\x69\x34\x73\x78\xe1\x89\x40\x31\x71\x85\xf0\x54\xfd\x2c\x52\xac\x97\xb4\x25\xaf\x06\xfc\x3e\xd3\xa3\x26\x4c\x33\xcb\x91\x78\x7c\xb0\x3c\x88\xa6\xcc\xab\xe4\xfa\x98\xb1\x3b\xf3\x9f\x90\x71\xa5\x0d\xb4\x6d\xd3\xc0\x53\xd9\x6f\xd0\xd5\xda\x1f\xe1\x38\x77\x07\xfb\x03\x80\x67\x80\xbf\x75\x14\x16\xcb\xfc\xeb\xbc\x6d\x57\x2b\xb8\xb8\xe6\x65\x89\x29\xb8\xa5\xa6\xc1\x5c\xa3\x5d\x68\x1a\x4f\xfe\x51\x61\xc6\x6b\x4c\x69\x5b\xdb\x02\xd7\xc0\x68\xb1\xd3\x51\xdb\x82\xcc\xc0\xec\x4b\x3c\x6c\x71\xef\x63\xab\xf2\x0e\x22\xcf\xba\xf3\x5f\xcb\xa2\x40\x61\x68\x61\x78\xce\xe0\x35\xd1\xbb\xad\x64\xc1\x53\x92\x1c\x70\x79\xb0\x2f\xac\x5e\x86\x92\x9d\x01\x97\x86\x39\x42\x81\xf0\xa2\xd7\x59\xdb\xc2\xff\xc1\x40\x87\xb4\xd1\x9e\xe8\x34\xe0\xe9\x87\x66\x19\x52\xde\x3c\xe2\x24\xb7\xa7\x5f\xad\x7d\x88\x81\xb5\xe0\xb1\x51\xdd\x1f\xef\x56\x0e\x71\x44\xfe\x09\x06\x8b\x32\x27\xaf\x9f\x6b\xa3\xb8\xb8\x42\x35\x87\x98\xac\x49\x31\xf0\x91\x29\x8d\x4d\x73\xf0\xcc\xb6\x05\x66\x68\x8b\xd1\x60\x24\x24\x52\x6c\x51\x19\x60\xe0\x36\xd3\x3b\xb2\xd9\x70\x43\x90\x55\x22\x99\xe2\x14\x0a\x72\x0f\xb7\x31\x82\xf0\x78\x71\x09\xa8\x94\x54\x11\x34\xc1\x8c\x67\x50\x2f\x41\x5e\x13\xbe\xaf\xc7\x64\xd6\x07\x2f\x89\xd1\x97\x9f\x88\xa2\x09\x66\x33\x85\xa6\x52\x82\xb6\x08\x9e\x07\xb3\xb6\x69\x78\x06\xb1\x90\x09\xd3\x36\xb6\xc9\x17\x5e\xd3\x7f\x2e\x34\x0a\xcd\x0d\xdf\x22\x94\x24\xdf\x12\x52\x92\x5f\x63\xc9\x28\xd3\x40\x2e\xe5\x75\x55\x12\xa8\x52\xe1\x16\x85\x81\x4a\x08\x4c\x50\x6b\xa6\xf6\x90\x48\x6d\xc8\x23\x73\xb9\x43\x95\x30\x4d\xf8\x7b\x45\xf0\x0c\x76\x08\xa9\x14\x3f\x1a\x10\x88\x29\x18\x19\xdf\x03\x89\xdb\xad\xe3\x4f\xf2\xaf\xc4\xd5\xaa\x28\xba\x0d\x5a\x67\xcc\x99\x47\xc9\x0a\xd4\x36\x33\x74\xb4\x23\x9d\xbf\x88\x96\x90\x15\x26\x7e\x4b\xda\xcd\xc2\xf9\x33\x4d\x71\x26\x24\xd9\x70\xcb\x72\x9e\xc2\xd8\x0e\x46\xed\xe1\xf2\x99\xfe\x32\x5f\x02\x71\x5f\x42\x27\xe3\x2f\x92\x8b\x70\x84\x82\x7e\xf5\x12\xe6\x4b\x98\x47\x91\x0f\x2f\xf2\xf2\x07\x94\xc8\xcb\x11\x0d\x83\xd7\xa6\x5a\xd2\x79\x5c\x1a\x05\x9d\xcf\x85\xf5\x68\x6b\x04\x1f\x8d\x0a\x23\x58\x8c\x5c\xba\xe9\x65\xfb\xa1\x0e\xda\xa0\xcb\x26\x1d\xcf\x82\x29\xbd\x61\xb9\xaf\x0b\xef\xdd\xd3\x27\xac\x0d\xf0\xa2\xcc\x91\x72\x89\x06\xb3\x41\x30\xf4\xce\x53\xe7\xa8\xa0\x40\xb3\x91\xe9\x49\x61\x06\x9c\xc2\x08\xc2\xcb\x2f\xeb\xbd\xc1\xa1\xe3\x7b\xa1\xdc\x42\x58\xc7\x17\x56\xf3\x61\x14\x39\xfb\xbb\x18\xfd\xbb\x28\xee\x90\xa8\x12\xa7\x65\x5a\x8c\x85\x3a\x62\x17\xda\xfd\xee\xfc\xc8\x09\x46\x72\x09\x5f\xb1\x9c\x27\x58\xa2\x28\x98\x99\xa2\xb4\xc2\xd3\xca\xa9\x70\x8f\x6c\x0c\x10\xd1\x93\x33\xc2\x30\xf4\x6a\x54\x2a\x98\xb5\xc1\x6c\x51\xc3\x19\x98\xa2\xec\xf1\x3b\xac\x23\xab\x48\x05\xb1\xfe\x2d\xb7\x3f\xa2\xca\x73\x2e\x4c\xff\x5f\x1b\xd5\xb6\xc1\x96\xa9\x71\x90\xbd\x55\xea\x9c\xe7\x1f\x8d\x82\x33\x87\x46\xc7\xe7\xb8\x0b\xe7\xae\x66\x96\x92\x0b\x83\xca\xba\x1f\xcf\xe7\x11\xac\x56\x20\x05\x42\x89\xca\x95\x9d\x4c\x2a\xe8\x1a\x81\x24\x67\x7a\x83\xda\x9a\xe0\x22\x61\x62\xac\x79\x7a\x27\x88\x19\xb1\xcc\x58\x82\xf1\x69\x9d\x13\x6d\xe8\x64\xe8\xc9\x9b\x36\x82\x90\x14\x75\x94\x07\x1d\xd1\xd9\x41\x77\x56\x59\x37\x22\xaa\x57\x2a\x29\xd4\x26\xbc\x57\xb0\xe3\x29\x2a\xdf\x2d\xc8\x0c\x34\xc9\xc7\xd6\x39\x5a\x68\x3a\xb6\x54\xa9\xe2\x5b\x54\xbe\xb2\x6f\x5d\xe7\xc0\x8c\xf3\x24\x59\xda\xf2\xbb\x41\xc8\xb9\x36\x56\x17\x58\x97\x98\x72\x14\xc9\x3e\x98\xe9\x1d\x37\xc9\x06\xb6\x64\x7d\x57\x44\x43\x62\x6c\x05\x4f\x5c\xb6\x35\x7f\xfa\xe3\xcb\x13\x22\x6f\x23\x4f\xe5\x5c\xca\x91\x39\x6f\x9a\x76\xa6\x6d\xe4\x12\xde\xc0\xfa\x94\x62\x26\xbc\x8b\x70\x51\x0e\xa3\x0c\x6f\x4b\xd4\xc6\x69\xf9\x0a\x95\x57\x27\xd3\x7d\xde\x26\x7a\xa7\xe6\x25\x6c\xbd\x2f\x6b\xa3\xa8\xce\xc5\xaf\x8c\xe4\xe1\x36\xfa\xc9\x2d\x0c\x6c\x30\x94\x75\x2c\x26\xcb\x7d\xb0\xce\x66\xe4\xdb\xb3\xb6\x6f\x55\x2c\x5c\x17\x5a\x77\xc3\xf5\x91\xb6\x8d\xbe\x13\xec\xc3\xf9\x0f\x0a\xff\x98\xbc\x77\x8e\xed\xc1\x65\xee\x74\x98\xc5\x4d\x1e\x84\xc4\x0b\x68\xe5\xf3\x69\xe4\x54\x2e\x08\x9c\x68\xf6\x94\x45\x77\x74\x75\x9f\xb3\xab\xfb\xf9\xf4\xc2\xf3\xfa\x0f\xe4\x1a\xb1\x5e\x1c\xf1\x76\x22\x3c\x06\xf7\x2c\x97\x8c\xd8\x53\x26\xfc\x55\x4b\xd1\x15\x37\x0d\xb8\x45\xb5\x37\x1b\xdb\xf3\x90\x1f\x79\x4a\xca\xcc\xdc\xfc\x48\x6f\x44\x55\xac\x51\xdd\xa9\x9b\x07\x39\xe2\x51\x34\x5b\x3d\xa6\xd9\xaa\x47\xb5\xdb\xe2\x90\x46\xbf\x95\xfd\x6d\xd9\x68\xf1\xbd\xb2\xef\xe2\xe1\xd2\x6f\x1b\xcc\xfa\x06\x23\x38\xd9\x55\x68\xd7\x4e\xae\x56\xe0\x6a\xe2\xa8\xc8\xbb\x7a\xe9\xd6\x26\x4b\xfd\xb8\xd2\x5b\x4a\x6a\xf6\x86\x95\x76\xa2\xe5\x3b\xf4\x7a\xcb\xbe\xfd\x71\x9d\xf4\xf7\x90\xc6\xfa\x6a\x58\x0f\x64\xe9\x5b\x31\xff\xa7\x6b\x95\xb3\x9c\x5d\x79\x11\x2f\xf0\x46\x37\xfa\x4e\xe6\x4c\x5c\x01\x11\xf9\x1e\xa3\x17\x12\x48\xc6\xdb\x5a\x24\x34\x64\xcd\x7e\x5c\xec\x7b\xd1\xed\xad\x3d\x27\x39\x40\xd0\x17\x95\x41\xa3\xe9\x7a\xe7\x77\xb7\xcb\xf8\x0e\x8d\x19\x6a\xf2\x2e\x21\xdf\x21\x35\xf2\x83\x16\x6e\xa0\xc3\x45\xed\xcf\xfc\x44\x9d\xe4\xe8\xd0\x2b\x6e\x36\xd5\x3a\x4e\x64\xb1\xd2\x65\xf6\xff\x7f\x58\x95\x7f\x21\x45\x8e\x74\x74\xcb\xc9\xc4\x34\x8c\xba\xe1\xf3\x70\xea\x7c\x34\x3b\x9d\xec\xa3\x27\x5a\x68\xb2\xa3\x6d\x7b\xcf\xab\x3c\x1f\x4d\x4c\xda\xa8\x2a\x31\x0d\xcd\x60\xc3\xf7\xa3\xc7\x60\xf6\xd9\x0e\x70\x14\xa3\xb3\xb5\x94\x79\xd3\xac\x16\xf0\x2a\x4d\x41\xcb\x82\x80\x65\x92\xc2\xdf\x48\xd8\x6d\xd0\x6c\xa8\xcd\xde\x70\xed\xf3\xc2\x8e\x69\x7b\x9b\x91\x56\x16\xd3\x61\x88\xa1\x27\xa9\xec\x84\xb8\x58\xb5\x7e\xbc\x1f\xcc\x68\xb3\x0b\x34\xb3\xd9\xe0\x4c\x1a\x12\xc1\x4d\x89\x56\x81\xe7\xb8\xbb\x09\xc9\x7a\xd7\x71\xf7\x5d\x4f\x20\xb7\x61\x51\xc7\x5d\xc7\x6e\x67\x84\x3d\x8d\xbc\x3b\x04\x7e\x25\xa4\x42\x87\xc1\xfa\xe7\x12\xb8\x81\x1d\xcf\x73\xf8\xb5\xd2\x06\xd6\x08\x34\x27\x08\x37\xd5\xba\x26\xb9\xb3\x94\x77\x8e\x7f\x77\x92\x98\x12\xf0\x9e\xd3\x84\xbf\x2a\x1b\x68\xae\x8e\x29\x66\xcf\xc0\xa8\x0a\x0f\x5a\x9b\x1c\x3b\xea\x78\x7c\x4d\x50\xc7\xce\xd6\x13\xd3\xc8\x12\x32\x96\x6b\x1c\x0d\x25\x2e\x61\x8f\x19\xc5\x07\xe9\x23\x52\x74\xc7\x34\x3c\x24\xfd\x68\xa8\x33\x9f\x77\x8e\x0b\xd1\x37\x27\xc8\x29\x75\xde\x99\x24\x79\x06\x4f\xbc\xa0\x83\x69\x56\xf0\xbc\xbb\xa5\xb9\x39\x5a\xb1\x24\xc1\xd2\x68\x97\x58\xed\x28\x45\x92\xbb\x81\x2b\x1e\xa7\xdd\x91\x86\x1e\xb4\x22\x3c\x16\xe0\xbe\x8c\x8d\xad\x3b\x51\xd5\x9c\x9b\xdd\x7a\xd9\xf2\xcb\xc5\x87\x73\x48\xa4\x52\x98\x98\x7c\x0f\x1a\x15\x67\x39\xff\x07\x4d\xa7\x53\xd9\xc9\x48\xa0\x1d\x1d\x4c\x31\x09\x73\xc0\x7a\xfa\xf6\xc5\x5d\xd4\x93\x5b\x5d\xd8\x0b\x83\x39\xfd\x9d\x5b\xf8\xc2\xfb\xe5\x00\x3e\xf5\xae\xb1\xe7\x19\x8a\xb1\xcd\x86\x4a\xf1\xd7\x39\x9e\xf1\xf4\x5d\xce\x08\x70\x8a\x77\x41\xce\x94\x2c\x46\xa0\x27\x93\xc3\xd1\x09\xe1\x7a\xe2\x6e\x67\x90\x04\x82\xd9\x96\x29\xa8\x87\x69\xc4\xc5\xed\xcb\x33\x87\xb7\xe7\x16\xae\x97\xf0\x43\x3d\xbe\xdd\x99\xb8\xdc\x71\x51\x2f\x5c\x98\xd7\xd1\xa8\x26\x1f\xbb\xc3\xb1\x67\x30\x91\x7e\x43\xa5\x22\xd3\xb9\x62\x45\xe0\x6e\xae\xdf\x5e\x14\x2e\x8c\xba\x67\x5d\x20\x4b\x3e\x6e\x69\x78\xa8\x00\xb7\x92\xfe\xce\x31\xfe\x3b\x06\xb6\x85\xf7\xbf\x18\xdb\x16\xf8\x7f\x4b\x78\x1f\x45\xf7\x61\x86\x38\x7c\x2d\xed\x3f\x46\xf5\x5f\x4c\x27\xbe\x34\x90\xe1\x9a\xc6\x77\xbd\x3c\xdb\xbb\x4f\x9e\x40\x7d\x6e\xe7\x75\xee\x83\x48\xdb\x4e\x5c\x06\xdb\x6f\x15\xb6\x5f\x11\xac\xe8\x77\xfb\x2f\x5f\x53\xa4\x0e\x0b\x19\xc9\xde\x80\xca\x0c\x4a\xa9\x35\x5f\xe7\xdd\xb5\x65\x77\x65\x2a\xb3\xd1\x7e\x6f\xb8\x09\xa6\x61\x04\x97\x5f\x0e\x6d\xbb\x29\x4a\xd2\x7e\xc1\xae\x31\xec\xde\x2f\x21\xc7\xe9\x0f\x2d\x11\xcd\xfb\xb2\xdc\x87\xf6\xea\x7d\x92\xa2\xb7\x80\x29\xca\x83\x05\xec\xc7\xe9\x09\x95\xbc\x67\xa5\x55\x08\x14\xac\x1c\xea\xd3\xf5\xa6\xfe\xcb\xd6\xa8\x3b\xf5\x86\xba\xcf\xbc\xd9\x65\x86\xc1\x9c\xc2\x33\x7a\x38\xf1\x4d\xec\x3d\x2b\x2f\xeb\x1b\x5f\xbf\xb4\x51\xc3\x90\xcb\x0a\x13\x5f\x94\x8a\x0b\x93\x85\xa3\x71\x27\x7c\x96\x46\xf3\x25\xd4\x51\x30\x0d\xd7\xa5\x54\x0b\x98\xc6\x8b\x01\xe4\xb8\xfb\xa8\x87\x47\x3e\xfa\xaf\x00\x00\x00\xff\xff\x03\x2f\xac\x8d\xa2\x20\x00\x00") +var _enumTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x59\xdd\x8f\xdb\xb8\x11\x7f\xb6\xfe\x8a\x39\x23\x77\x27\xb9\x8e\x9c\xa2\x45\x1f\x72\xd8\x87\xcb\x47\x83\x3b\xf4\x36\x41\x37\xcd\x4b\x10\x04\xb4\x34\x5a\xf3\x56\x22\x75\x24\xa5\x95\xab\xea\x7f\x2f\x86\xa4\x64\x59\xd6\x7e\x34\xdd\xbd\xa0\xe8\x8b\x61\x8a\xc3\xe1\xfc\x66\x86\xf3\x41\xb6\xed\x53\x48\x31\xe3\x02\x61\xb9\x43\x96\xa2\x5a\x76\x5d\xb0\xd9\xc0\x4b\x99\x22\x5c\xa2\x40\xc5\x0c\xa6\xb0\xdd\xc3\xa5\x7c\x8a\xa2\x2a\xe0\xd5\x5b\x38\x7f\xfb\x1e\x5e\xbf\xfa\xe9\x7d\x4c\x94\x1f\x50\x69\x2e\xc5\x73\x68\x5b\x88\x6b\x37\x00\xc7\xe4\xef\x58\xf3\xc3\x9c\xf2\x23\x3f\xf9\xa2\xe2\x79\x0a\xaf\x98\x41\x37\xbd\xa5\x31\x0d\x47\xf3\x06\x5e\xec\x0f\xb3\xe6\xc5\x9e\xe6\x82\x92\x25\x57\xec\x12\xa1\x6d\x63\xff\x97\xbe\xf2\xa2\x94\xca\x40\x18\x00\x00\x2c\xb3\xc2\x2c\x83\x28\x68\x5b\x14\x29\x3c\xa5\xf9\x31\x54\x02\x42\x40\x13\x29\x34\x2d\xa1\xb9\x27\xf4\xf1\x9c\x15\x08\xcf\xcf\x20\xa6\x41\x6c\x47\xb4\xd8\xce\xd7\x4c\x69\x9a\x4b\x79\x62\x60\x99\x33\x6d\x64\x96\x69\x34\x4b\x78\xe6\x89\x40\x31\x71\x89\xf0\x44\xfd\x24\x52\x6c\xd6\xb4\x24\xaf\x46\xfc\x3e\xd0\x50\x13\x86\x85\xe5\x48\x3c\xde\x5a\x1e\x44\x53\xe6\x55\x72\x75\xcc\xd8\xed\xf9\x2f\xc8\xb8\xd2\x06\xba\xae\x6d\xe1\x89\x1c\x16\xe8\x6a\xeb\xb7\x70\x9c\xfb\x8d\xfd\x06\xc0\x33\xc0\xdf\x7a\x0a\x8b\x65\xf9\x79\xd9\x75\x9b\x0d\x5c\x5c\xf1\xb2\xc4\x14\xdc\x54\xdb\x62\xae\xd1\x4e\xb4\xad\x27\x7f\xa7\x30\xe3\x0d\xa6\xb4\xac\xeb\x80\x6b\x60\x34\xd9\xeb\xa8\xeb\x40\x66\x60\xf6\x25\x1e\x96\xb8\xef\xb1\x55\x79\x0f\x91\x67\xfd\xfe\x2f\x65\x51\xa0\x30\x34\x31\xde\x67\xf4\x99\xe8\xdd\x52\xb2\xe0\x4d\x92\x1c\x70\x79\xb0\xcf\xac\x5e\xc6\x92\x9d\x01\x97\x86\x39\x42\x81\xf0\x6c\xd0\x59\xd7\xc1\x1f\x60\xa4\x43\x5a\x68\x77\x74\x1a\xf0\xf4\x63\xb3\x8c\x29\x4f\xb7\xb8\x91\xdb\x93\xcf\xd6\x3e\xc4\xc0\x5a\xf0\xd8\xa8\xee\x8f\x77\x2b\x87\x38\x22\xff\x04\x83\x45\x99\xd3\x09\x58\x6a\xa3\xb8\xb8\x44\xb5\x84\xd8\xba\x7c\xcd\x14\x7c\x6e\xdb\x83\x5b\x76\xdd\x2f\xac\x84\x33\xda\xbf\x60\x25\xcf\xf6\xce\xc5\x2c\x31\x19\xd8\xae\x07\x5e\x94\x39\x92\x7e\x35\x98\x1d\xfa\xaf\xa8\x80\x0b\x83\x2a\x63\x09\xc6\x41\x56\x89\x04\xc2\x06\x8e\x99\x47\x9e\x36\x8c\xc0\x89\x02\x6d\xb0\xe0\x19\x0d\xd6\x20\xaf\x08\xdd\xa9\x38\x1f\x9b\x4f\x3f\xd0\x64\x1b\x2c\x16\x0a\x4d\xa5\x04\xd1\x07\x8b\x2e\xe8\x87\x59\x61\xe2\x8b\x52\x71\x61\xb2\x70\x79\xbc\x3e\xfc\x36\x8d\x96\x6b\x68\xa2\x60\x1e\xae\xf3\x70\x0b\xb8\x12\x47\x90\xe3\x5c\x5e\xa3\x4a\x98\xc6\x1e\xfd\x3b\xa6\x34\x1e\x2f\x07\x66\x48\xbb\xa4\x08\x09\x89\x14\x35\x2a\x03\xac\x07\x67\xa4\x75\xef\xf1\x02\xaf\x99\x19\x56\xa1\xa0\xa3\xe4\x56\x46\x10\x1e\x4f\xae\x01\x95\x92\x2a\xf2\xfa\x6a\x6e\xd0\x96\x45\xf3\x91\x18\x9d\xa8\xac\x59\x83\xe0\x79\xb0\xe8\xda\x96\x67\x10\x0b\xd9\x23\xa3\x73\xf3\x92\xfe\x73\xa1\x51\x68\x6e\x78\x8d\x50\x92\x7c\x6b\x48\x09\x80\xc6\x92\x51\xb8\x86\x5c\xca\xab\xaa\x24\x54\xa5\xc2\x1a\x85\x81\x4a\x08\x4c\x50\x6b\xa6\xf6\x90\x48\x6d\xe8\xf4\xf6\x6a\x23\x05\x0c\x9a\xe0\x19\x5c\x23\xa4\x52\x7c\x6f\x40\x20\xa6\x60\x64\x7c\x0f\x24\x6e\xb5\x8e\xdf\xcb\xbf\x11\x57\xab\xa2\xe8\x36\x68\xbd\xe3\x2f\x3c\x4a\x56\xa0\xb6\x51\xb4\xa7\x9d\xe8\xfc\x59\xb4\xb6\xde\xf3\x9a\xb4\x9b\x85\xcb\x6f\x35\xc5\x24\x21\xc9\x88\x35\xcb\x79\x0a\x53\x3b\x18\xb5\x87\x8f\xdf\xea\x4f\xcb\x35\x10\xf7\x35\xf4\x32\xfe\x2c\xb9\x08\x27\x28\xe8\x57\xaf\x61\xb9\x86\x65\x14\xf9\x50\x44\x11\xe1\x01\x25\xf2\x72\x44\xe3\x40\x67\xd3\x12\xe9\x3c\x2e\x2a\x6d\xac\x2d\x7d\xf6\xfb\xa5\xd2\x66\xce\x8d\xbd\xeb\xea\x5b\x7d\x77\x0d\x4c\xa4\x50\x32\xc1\x13\x4d\xdc\xbd\x5c\x56\x2a\xef\xd7\x37\xf0\x3f\xf6\xed\xc9\xde\x6d\xb0\xa8\x59\x6e\x3d\x9c\x1c\xe1\xa6\xe5\x91\xf5\x17\x22\xfa\xe6\x8c\xec\x6d\x3d\xc0\x0a\x13\xa2\x52\xd1\x38\x1e\xd4\x2c\x0f\xba\xa0\xcf\x18\xbd\x2e\x4a\xa3\x48\x0b\x37\x45\xa6\x77\x46\x85\x11\xac\x4e\x85\xf3\x4c\xbf\x6b\x66\x78\x16\x4c\xe9\x1d\xcb\x7b\xed\xba\xd1\x7b\x6c\xcc\x34\x46\x1a\xfa\xe6\xa9\x73\x54\x50\xa0\xd9\xc9\xf4\xe6\x38\x39\x62\x15\x46\x10\x7e\xfc\xb4\xdd\x1b\x1c\x47\x01\x2f\x95\x9b\x08\x9b\xb8\x0f\xac\x91\x3b\x0c\x2e\x62\xfd\x43\x14\x77\x88\x54\x89\x5b\x84\x5a\x4d\xa5\x3a\xe2\x17\x5a\x06\x4e\x80\xc8\x49\x46\x82\x09\x5f\xeb\x38\x6b\x5b\xa2\x28\x58\x98\xa2\xfc\x32\x0b\x7b\x9c\xa8\x5c\xc4\x5f\x35\x70\x06\xa6\x28\x07\x05\x38\xb0\x13\xbb\x48\x05\xb1\xfe\x2d\xb7\x3f\xa2\xca\x73\x2e\xcc\xf0\x5f\x1b\xd5\x75\x73\xa9\xe0\xb5\x52\xe7\x3c\x7f\x67\x14\x9c\x39\x34\x3a\x3e\xc7\xeb\x70\xe9\xaa\xad\x52\xda\xec\x66\x9d\x9e\xe7\xcb\x08\x36\x1b\x90\x02\xa1\x44\xe5\x0a\x96\x4c\x2a\xe8\x4b\xc8\x24\x67\x7a\x87\xda\xe5\xcc\x84\x89\x93\x8c\x99\x30\x21\xe6\x13\xe6\x89\xce\x89\x36\x74\x32\x0c\xe4\x6d\x17\x01\x79\xfd\x71\x56\x70\x44\x67\x07\xdd\x59\x65\x9d\xc4\x97\x41\xa9\xa4\x50\x1b\xfe\x7f\x84\x6b\x9e\xa2\xf2\x75\xa6\xcc\x40\x93\x7c\x6c\x9b\xa3\x85\xa6\x63\x4b\x95\x2a\x5e\xa3\xf2\x35\x61\xed\x6a\x4e\x66\x9c\x2b\xc9\xd2\x16\x6e\x3b\x84\x9c\x6b\x63\x75\x81\x4d\x89\x29\x47\x91\xec\x83\x85\xbe\xe6\x26\xd9\x41\x4d\xd6\x77\xe5\x57\x48\x8c\xad\xe0\x89\xcb\x3d\xe6\x2f\x7f\x7e\x7e\x83\xc8\x75\xe4\xa9\x9c\x4b\x39\x32\xe7\x4d\xf3\xce\x54\x47\x2e\xfc\x8f\xac\x4f\x01\x77\xc6\xbb\x08\x17\x45\x74\x8a\x91\x36\xea\xed\x9c\x96\xa9\x9a\x71\xea\x64\x87\x98\x48\xf4\x4e\xcd\x6b\xa8\xbd\x2f\x6b\xa3\x28\x76\xc6\x3f\x1a\xc9\xc3\x3a\xfa\xc1\x4d\x8c\x6c\x30\x96\x75\x2a\x26\xcb\xfd\x69\x5d\x2c\xc8\xb7\x17\xdd\x50\xe4\x5a\xb8\xee\x68\xdd\x0d\xd7\x9f\xb4\x3a\xfa\x4a\xb0\x0f\xfb\x3f\x28\xfc\x63\xf2\xc1\x39\xea\x83\xcb\xdc\xe9\x30\xab\x53\x1e\x84\xc4\x0b\x68\xe5\xf3\x61\xe4\xa6\x58\x10\x38\xd1\xec\x2e\xab\x7e\xeb\xea\x3e\x7b\x57\xf7\xf3\xe9\x95\xe7\xf5\x5f\xc8\x35\x61\xbd\x3a\xe2\xed\x44\x78\x0c\xee\x59\x2e\x19\xb1\xa7\x48\xf8\xab\x96\xa2\x4f\x6f\x1a\xb0\x46\xb5\x37\x3b\x5b\x01\x92\x1f\x79\x4a\x5b\x33\x98\xef\xe9\x8b\xa8\x8a\x2d\xaa\x3b\x75\xf3\x20\x5b\x3c\x8a\x66\xab\xc7\x34\x5b\xf5\xa8\x76\x5b\x1d\xc2\xe8\x97\xb2\xbf\x2d\x1a\xad\xbe\x56\xf4\x5d\x3d\x5c\xf8\xed\x82\xc5\x50\x60\x04\x37\x56\x15\xda\x15\x94\x9b\x0d\xb8\x9c\x38\x49\xf2\x2e\x5f\xba\xb9\x7b\xf5\xc6\x96\x92\xaa\xbd\x71\xa6\x9d\xa9\xf9\x0e\xc5\xde\x7a\x28\x7f\x5c\x5f\xf1\x35\xa4\xb1\xbe\x1a\x36\x23\x59\x86\x52\xcc\xff\xe9\x8b\xe5\x2c\x67\x97\x5e\xc4\x0b\x3c\x29\x47\xdf\xc8\x9c\x89\x4b\x20\x22\x5f\x63\x0c\x42\x02\xc9\x78\x5b\x89\x84\x86\xac\x39\x34\x18\x43\x2d\x5a\xdf\x5a\x73\x92\x03\x04\x43\x52\x19\x15\x9a\xae\x78\x7e\x73\xbb\x8c\x6f\xd0\x98\xb1\x26\xef\x12\xf2\x0d\x52\x25\x3f\x2a\xe1\x46\x3a\x5c\x35\x7e\xcf\xf7\x54\x49\x4e\x36\xbd\xe4\x66\x57\x6d\xe3\x44\x16\x1b\x5d\x66\x7f\xfc\xd3\xa6\xfc\x2b\x29\x72\xa2\xa3\x5b\x76\x26\xa6\x47\x37\x2e\x7e\xd7\xc9\x55\xc9\xf2\xc6\x3a\x7a\xa6\x84\x26\x3b\xda\xb2\xf7\xbc\xca\xf3\x49\xcf\xa4\x8d\xaa\x12\xd3\x52\x47\x3a\xfe\x3e\x19\x06\x8b\x0f\xb6\x9d\xa5\x33\xba\xd8\x4a\x99\xb7\xed\x66\x05\x3f\xa6\x29\x68\x59\x10\xb0\x4c\xd2\xf1\x37\x12\xae\x77\x68\x76\x54\x66\xef\xb8\xf6\x71\xe1\x9a\x69\x7b\x0f\x96\x56\x16\xd3\xa1\x8b\xa1\x91\x54\xb6\x2f\x5d\x6d\x3a\x7f\xd9\x31\xea\xd2\x16\x17\x68\x16\x8b\xd1\x9e\xd4\x32\x83\xeb\x99\xad\x02\xcf\xf1\xfa\x14\x92\xf5\xae\xe3\xea\xbb\x99\x41\x6e\x8f\x45\x13\xf7\x15\xbb\xed\x11\xf6\xa8\xd7\x70\x8d\xc0\x2f\x85\x54\xe8\x30\x58\xff\x5c\x03\x37\x70\xcd\xf3\x1c\x7e\xad\xb4\x81\x2d\x02\xf5\x09\xc2\xf5\xf8\xae\x48\xee\x2d\xe5\x9d\xe3\x3f\xed\x24\xe6\x04\xbc\x67\x37\xe1\x2f\x59\x47\x9a\x6b\x62\x3a\xb3\x67\x60\x54\x85\x07\xad\xcd\xb6\x1d\x4d\x3c\xbd\x37\x68\x62\x67\xeb\x99\x6e\x64\x0d\x19\xcb\x35\x4e\x9a\x12\x17\xb0\xa7\x8c\xe2\x83\xf4\x11\x29\xba\x67\x1a\x1e\x82\x7e\x34\xd6\x99\x8f\x3b\xc7\x89\xe8\x8b\x03\xe4\x9c\x3a\xef\x0c\x92\x3c\x83\x6f\xbc\xa0\xa3\x6e\x56\xf0\xbc\xbf\xb3\x3a\x6d\xad\x58\x92\x60\x69\xb4\x0b\xac\xb6\x95\x22\xc9\x5d\xc3\x15\x4f\xc3\xee\x44\x43\x0f\x9a\x11\x1e\x0b\xf0\x90\xc6\xa6\xd6\x9d\xc9\x6a\xce\xcd\x6e\xbd\x6e\xf9\xf9\xe2\xed\x39\x24\x52\x29\x4c\x4c\xbe\x07\x8d\x8a\xb3\x9c\xff\x93\xba\xd3\xb9\xe8\x64\x24\xd0\x8a\x1e\xa6\x98\x85\x39\x62\x3d\x7f\xfd\xe2\x9e\x78\xc8\xad\x2e\xec\x85\xc1\x92\xfe\x2e\x2d\x7c\xe1\xfd\x72\x04\x9f\x6a\xd7\xd8\xf3\x0c\xc5\xd4\x66\x63\xa5\xf8\xfb\x1c\xcf\x78\xfe\x32\x67\x02\x38\xc5\xbb\x20\x67\x4a\x16\x13\xd0\xb3\xc1\xe1\x68\x87\x70\x3b\x73\xb7\x33\x0a\x02\xc1\xa2\x66\x0a\x9a\x71\x18\x71\xe7\xf6\xf9\x99\xc3\x3b\x70\x0b\xb7\x6b\xf8\xae\x99\xde\xee\xcc\x5c\xee\xb8\x53\x2f\xdc\x31\x6f\xa2\x49\x4e\x3e\x76\x87\x63\xcf\x60\x22\xfd\x82\x4c\x45\xa6\x73\xc9\x8a\xc0\x9d\xce\xdf\x9e\x14\x2e\x8c\xba\x67\x5e\x20\x4b\x3e\x6e\x6a\x78\xa8\x03\x6e\x25\xfd\x9d\xcf\xf8\xef\x78\xb0\x2d\xbc\xff\xc7\xb3\x6d\x81\xff\xaf\x1c\xef\xa3\xd3\x7d\xe8\x21\x0e\xef\xec\xc3\x33\xe6\xf0\xd6\x3e\xf3\xee\x42\x86\x6b\x5b\x5f\xf5\x8e\x9e\xf5\x32\xa9\x12\xb4\x8f\x54\x40\x35\x6f\xef\x81\xee\xa9\xa8\xeb\x66\x2e\x86\xed\x2b\x8e\xad\x5d\x04\x2b\x06\x4e\xfe\x51\x70\x8e\xd4\xe1\x22\x83\xd9\xdb\x50\x99\x41\x29\xb5\xe6\xdb\xbc\xbf\xc2\xec\xaf\x4f\x65\x36\xff\x3c\x38\xc3\x34\x8c\xe0\xe3\xa7\x43\x09\x6f\x8a\x92\x2c\x51\xb0\x2b\x0c\xfb\xef\x6b\xc8\x71\xfe\x09\x2a\xa2\xde\x5f\x96\xfb\xd0\x5e\xc3\xcf\x52\x0c\xd6\x30\x45\x79\xb0\xc6\xd3\xb1\x11\xfe\x1d\x00\x00\xff\xff\xcd\xe3\x2a\x81\xd6\x21\x00\x00") func enumTmplBytes() ([]byte, error) { return bindataRead( @@ -85,7 +85,7 @@ func enumTmpl() (*asset, error) { } info := bindataFileInfo{name: "enum.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7a, 0x85, 0x1, 0x7f, 0x8a, 0xb9, 0x0, 0xfb, 0x6, 0xce, 0xa8, 0xb4, 0xc9, 0xc5, 0xcb, 0x69, 0xad, 0x6d, 0xbd, 0x9c, 0xe4, 0x51, 0xf6, 0x29, 0x5e, 0xa6, 0x99, 0x7c, 0x4e, 0x68, 0xc4, 0x46}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa1, 0xda, 0x31, 0x38, 0xe3, 0x6, 0x16, 0x85, 0x81, 0x26, 0x17, 0x21, 0x76, 0xbc, 0x9, 0x22, 0x2, 0x71, 0x8c, 0xb8, 0xcf, 0xe2, 0x8, 0x8f, 0xa2, 0x22, 0xda, 0x1e, 0xad, 0x8f, 0xa8, 0xc4}} return a, nil } From 06ca88018f9c460c77e7d1d97fbe951fa7fe6883 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 19 Mar 2022 15:49:25 -0700 Subject: [PATCH 26/91] Bump golang.org/x/tools from 0.1.9 to 0.1.10 (#87) Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.1.9 to 0.1.10. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.1.9...v0.1.10) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 3 +-- go.sum | 13 +++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index 33a80251..42384b8c 100644 --- a/go.mod +++ b/go.mod @@ -21,8 +21,7 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.7.0 github.com/urfave/cli/v2 v2.3.0 - golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf // indirect - golang.org/x/tools v0.1.9 + golang.org/x/tools v0.1.10 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go.sum b/go.sum index eea0cf2e..b13470a7 100644 --- a/go.sum +++ b/go.sum @@ -63,11 +63,11 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf h1:B2n+Zi5QeYRDAEodEu72OS36gmTWjgpXr2+cWcBW90o= -golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -81,6 +81,7 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -94,8 +95,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.9 h1:j9KsMiaP1c3B0OTQGth0/k+miLGTgLsAFUCrF2vLcF8= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= From 0443138183d4ec2c119a46492392b75440deea09 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 19 Mar 2022 15:51:57 -0700 Subject: [PATCH 27/91] Bump github.com/urfave/cli/v2 from 2.3.0 to 2.4.0 (#86) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.3.0 to 2.4.0. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/master/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.3.0...v2.4.0) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 3 +-- go.sum | 17 +++++++---------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 42384b8c..ee678b59 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,6 @@ require ( github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/sprig v2.22.0+incompatible github.com/bradleyjkemp/cupaloy v2.3.0+incompatible - github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect github.com/golang/mock v1.6.0 github.com/google/uuid v1.2.0 // indirect github.com/huandu/xstrings v1.3.2 // indirect @@ -20,7 +19,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.7.0 - github.com/urfave/cli/v2 v2.3.0 + github.com/urfave/cli/v2 v2.4.0 golang.org/x/tools v0.1.10 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index b13470a7..b1464456 100644 --- a/go.sum +++ b/go.sum @@ -7,9 +7,8 @@ github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZC github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/bradleyjkemp/cupaloy v2.3.0+incompatible h1:UafIjBvWQmS9i/xRg+CamMrnLTKNzo+bdmT/oH34c2Y= github.com/bradleyjkemp/cupaloy v2.3.0+incompatible/go.mod h1:Au1Xw1sgaJ5iSFktEhYsS0dbQiS1B0/XMXl+42y9Ilk= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.1 h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU= +github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -46,17 +45,15 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M= -github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= +github.com/urfave/cli/v2 v2.4.0 h1:m2pxjjDFgDxSPtO8WSdbndj17Wu2y8vOT86wE/tjr+I= +github.com/urfave/cli/v2 v2.4.0/go.mod h1:NX9W0zmTvedE5oDoOMs2RTC8RvdK98NTYZE5LbaEYPg= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= @@ -104,7 +101,7 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= From 861d2dc1b2ec54a3d3f56f4b16545898bd691ad1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 19 Mar 2022 15:53:29 -0700 Subject: [PATCH 28/91] Bump github.com/stretchr/testify from 1.7.0 to 1.7.1 (#88) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.7.0 to 1.7.1. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.7.0...v1.7.1) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index ee678b59..eb55689c 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/mitchellh/copystructure v1.1.2 // indirect github.com/pkg/errors v0.9.1 github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.7.0 + github.com/stretchr/testify v1.7.1 github.com/urfave/cli/v2 v2.4.0 golang.org/x/tools v0.1.10 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect diff --git a/go.sum b/go.sum index b1464456..01c10508 100644 --- a/go.sum +++ b/go.sum @@ -50,8 +50,9 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/urfave/cli/v2 v2.4.0 h1:m2pxjjDFgDxSPtO8WSdbndj17Wu2y8vOT86wE/tjr+I= github.com/urfave/cli/v2 v2.4.0/go.mod h1:NX9W0zmTvedE5oDoOMs2RTC8RvdK98NTYZE5LbaEYPg= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= From ff7c099d6f33b8b956aa5baaad77a343ba601d44 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Sat, 19 Mar 2022 16:05:57 -0700 Subject: [PATCH 29/91] add 1.17 and 1.18 (#90) * add 1.17 and 1.18 * support 64 bit types * debug failures * use the right bin --- .github/workflows/build_and_test.yml | 3 + example/enum_32_bit.go | 23 ++ example/enum_32_bit_enum.go | 106 ++++++ example/enum_64_bit.go | 26 ++ example/enum_64_bit_enum.go | 122 +++++++ .../generator-TestCustomPrefixExampleFile | 324 +++++++++++++++++- .../.snapshots/generator-TestExampleFile | 222 +++++++++++- .../generator-TestNoPrefixExampleFile | 137 +++++++- ...or-TestNoPrefixExampleFileWithSnakeToCamel | 137 +++++++- generator/example_test.go | 20 ++ generator/generator.go | 12 +- 11 files changed, 1123 insertions(+), 9 deletions(-) create mode 100644 example/enum_32_bit.go create mode 100644 example/enum_32_bit_enum.go create mode 100644 example/enum_64_bit.go create mode 100644 example/enum_64_bit_enum.go diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 4b20f343..6baae618 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -10,6 +10,7 @@ jobs: build: runs-on: ubuntu-latest strategy: + fail-fast: false matrix: go: # Drop support of go 1.12 @@ -17,6 +18,8 @@ jobs: - "1.14" - "1.15" - "1.16" + - "1.17" + - "1.18" name: run tests with go version ${{ matrix.go }} steps: - name: install go diff --git a/example/enum_32_bit.go b/example/enum_32_bit.go new file mode 100644 index 00000000..5ceaf412 --- /dev/null +++ b/example/enum_32_bit.go @@ -0,0 +1,23 @@ +//go:generate ../bin/go-enum -f=$GOFILE --ptr --marshal + +package example + +/* ENUM( + +Unkno = 0 +E2P15 = 32768 +E2P16 = 65536 +E2P17 = 131072 +E2P18 = 262144 +E2P19 = 524288 +E2P20 = 1048576 +E2P21 = 2097152 +E2P22 = 33554432 +E2P23 = 67108864 +E2P28 = 536870912 +E2P30 = 1073741824 + +) + +*/ +type Enum32bit uint32 diff --git a/example/enum_32_bit_enum.go b/example/enum_32_bit_enum.go new file mode 100644 index 00000000..4431109c --- /dev/null +++ b/example/enum_32_bit_enum.go @@ -0,0 +1,106 @@ +// Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example + +package example + +import ( + "fmt" +) + +const ( + // Enum32bitUnkno is a Enum32bit of type Unkno. + Enum32bitUnkno Enum32bit = iota + // Enum32bitE2P15 is a Enum32bit of type E2P15. + Enum32bitE2P15 Enum32bit = iota + 32767 + // Enum32bitE2P16 is a Enum32bit of type E2P16. + Enum32bitE2P16 Enum32bit = iota + 65534 + // Enum32bitE2P17 is a Enum32bit of type E2P17. + Enum32bitE2P17 Enum32bit = iota + 131069 + // Enum32bitE2P18 is a Enum32bit of type E2P18. + Enum32bitE2P18 Enum32bit = iota + 262140 + // Enum32bitE2P19 is a Enum32bit of type E2P19. + Enum32bitE2P19 Enum32bit = iota + 524283 + // Enum32bitE2P20 is a Enum32bit of type E2P20. + Enum32bitE2P20 Enum32bit = iota + 1048570 + // Enum32bitE2P21 is a Enum32bit of type E2P21. + Enum32bitE2P21 Enum32bit = iota + 2097145 + // Enum32bitE2P22 is a Enum32bit of type E2P22. + Enum32bitE2P22 Enum32bit = iota + 33554424 + // Enum32bitE2P23 is a Enum32bit of type E2P23. + Enum32bitE2P23 Enum32bit = iota + 67108855 + // Enum32bitE2P28 is a Enum32bit of type E2P28. + Enum32bitE2P28 Enum32bit = iota + 536870902 + // Enum32bitE2P30 is a Enum32bit of type E2P30. + Enum32bitE2P30 Enum32bit = iota + 1073741813 +) + +const _Enum32bitName = "UnknoE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30" + +var _Enum32bitMap = map[Enum32bit]string{ + Enum32bitUnkno: _Enum32bitName[0:5], + Enum32bitE2P15: _Enum32bitName[5:10], + Enum32bitE2P16: _Enum32bitName[10:15], + Enum32bitE2P17: _Enum32bitName[15:20], + Enum32bitE2P18: _Enum32bitName[20:25], + Enum32bitE2P19: _Enum32bitName[25:30], + Enum32bitE2P20: _Enum32bitName[30:35], + Enum32bitE2P21: _Enum32bitName[35:40], + Enum32bitE2P22: _Enum32bitName[40:45], + Enum32bitE2P23: _Enum32bitName[45:50], + Enum32bitE2P28: _Enum32bitName[50:55], + Enum32bitE2P30: _Enum32bitName[55:60], +} + +// String implements the Stringer interface. +func (x Enum32bit) String() string { + if str, ok := _Enum32bitMap[x]; ok { + return str + } + return fmt.Sprintf("Enum32bit(%d)", x) +} + +var _Enum32bitValue = map[string]Enum32bit{ + _Enum32bitName[0:5]: Enum32bitUnkno, + _Enum32bitName[5:10]: Enum32bitE2P15, + _Enum32bitName[10:15]: Enum32bitE2P16, + _Enum32bitName[15:20]: Enum32bitE2P17, + _Enum32bitName[20:25]: Enum32bitE2P18, + _Enum32bitName[25:30]: Enum32bitE2P19, + _Enum32bitName[30:35]: Enum32bitE2P20, + _Enum32bitName[35:40]: Enum32bitE2P21, + _Enum32bitName[40:45]: Enum32bitE2P22, + _Enum32bitName[45:50]: Enum32bitE2P23, + _Enum32bitName[50:55]: Enum32bitE2P28, + _Enum32bitName[55:60]: Enum32bitE2P30, +} + +// ParseEnum32bit attempts to convert a string to a Enum32bit. +func ParseEnum32bit(name string) (Enum32bit, error) { + if x, ok := _Enum32bitValue[name]; ok { + return x, nil + } + return Enum32bit(0), fmt.Errorf("%s is not a valid Enum32bit", name) +} + +func (x Enum32bit) Ptr() *Enum32bit { + return &x +} + +// MarshalText implements the text marshaller method. +func (x Enum32bit) MarshalText() ([]byte, error) { + return []byte(x.String()), nil +} + +// UnmarshalText implements the text unmarshaller method. +func (x *Enum32bit) UnmarshalText(text []byte) error { + name := string(text) + tmp, err := ParseEnum32bit(name) + if err != nil { + return err + } + *x = tmp + return nil +} diff --git a/example/enum_64_bit.go b/example/enum_64_bit.go new file mode 100644 index 00000000..a5af3250 --- /dev/null +++ b/example/enum_64_bit.go @@ -0,0 +1,26 @@ +//go:generate ../bin/go-enum -f=$GOFILE --ptr --marshal + +package example + +/* ENUM( + +Unkno = 0 +E2P15 = 32768 +E2P16 = 65536 +E2P17 = 131072 +E2P18 = 262144 +E2P19 = 524288 +E2P20 = 1048576 +E2P21 = 2097152 +E2P22 = 33554432 +E2P23 = 67108864 +E2P28 = 536870912 +E2P30 = 1073741824 +E2P31 = 2147483648 +E2P32 = 4294967296 +E2P33 = 8454967296 +E2P63 = 18446744073709551615 +) + +*/ +type Enum64bit uint64 diff --git a/example/enum_64_bit_enum.go b/example/enum_64_bit_enum.go new file mode 100644 index 00000000..66413fe1 --- /dev/null +++ b/example/enum_64_bit_enum.go @@ -0,0 +1,122 @@ +// Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example + +package example + +import ( + "fmt" +) + +const ( + // Enum64bitUnkno is a Enum64bit of type Unkno. + Enum64bitUnkno Enum64bit = iota + // Enum64bitE2P15 is a Enum64bit of type E2P15. + Enum64bitE2P15 Enum64bit = iota + 32767 + // Enum64bitE2P16 is a Enum64bit of type E2P16. + Enum64bitE2P16 Enum64bit = iota + 65534 + // Enum64bitE2P17 is a Enum64bit of type E2P17. + Enum64bitE2P17 Enum64bit = iota + 131069 + // Enum64bitE2P18 is a Enum64bit of type E2P18. + Enum64bitE2P18 Enum64bit = iota + 262140 + // Enum64bitE2P19 is a Enum64bit of type E2P19. + Enum64bitE2P19 Enum64bit = iota + 524283 + // Enum64bitE2P20 is a Enum64bit of type E2P20. + Enum64bitE2P20 Enum64bit = iota + 1048570 + // Enum64bitE2P21 is a Enum64bit of type E2P21. + Enum64bitE2P21 Enum64bit = iota + 2097145 + // Enum64bitE2P22 is a Enum64bit of type E2P22. + Enum64bitE2P22 Enum64bit = iota + 33554424 + // Enum64bitE2P23 is a Enum64bit of type E2P23. + Enum64bitE2P23 Enum64bit = iota + 67108855 + // Enum64bitE2P28 is a Enum64bit of type E2P28. + Enum64bitE2P28 Enum64bit = iota + 536870902 + // Enum64bitE2P30 is a Enum64bit of type E2P30. + Enum64bitE2P30 Enum64bit = iota + 1073741813 + // Enum64bitE2P31 is a Enum64bit of type E2P31. + Enum64bitE2P31 Enum64bit = iota + 2147483636 + // Enum64bitE2P32 is a Enum64bit of type E2P32. + Enum64bitE2P32 Enum64bit = iota + 4294967283 + // Enum64bitE2P33 is a Enum64bit of type E2P33. + Enum64bitE2P33 Enum64bit = iota + 8454967282 + // Enum64bitE2P63 is a Enum64bit of type E2P63. + Enum64bitE2P63 Enum64bit = iota + 9223372036854775792 +) + +const _Enum64bitName = "UnknoE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33E2P63" + +var _Enum64bitMap = map[Enum64bit]string{ + Enum64bitUnkno: _Enum64bitName[0:5], + Enum64bitE2P15: _Enum64bitName[5:10], + Enum64bitE2P16: _Enum64bitName[10:15], + Enum64bitE2P17: _Enum64bitName[15:20], + Enum64bitE2P18: _Enum64bitName[20:25], + Enum64bitE2P19: _Enum64bitName[25:30], + Enum64bitE2P20: _Enum64bitName[30:35], + Enum64bitE2P21: _Enum64bitName[35:40], + Enum64bitE2P22: _Enum64bitName[40:45], + Enum64bitE2P23: _Enum64bitName[45:50], + Enum64bitE2P28: _Enum64bitName[50:55], + Enum64bitE2P30: _Enum64bitName[55:60], + Enum64bitE2P31: _Enum64bitName[60:65], + Enum64bitE2P32: _Enum64bitName[65:70], + Enum64bitE2P33: _Enum64bitName[70:75], + Enum64bitE2P63: _Enum64bitName[75:80], +} + +// String implements the Stringer interface. +func (x Enum64bit) String() string { + if str, ok := _Enum64bitMap[x]; ok { + return str + } + return fmt.Sprintf("Enum64bit(%d)", x) +} + +var _Enum64bitValue = map[string]Enum64bit{ + _Enum64bitName[0:5]: Enum64bitUnkno, + _Enum64bitName[5:10]: Enum64bitE2P15, + _Enum64bitName[10:15]: Enum64bitE2P16, + _Enum64bitName[15:20]: Enum64bitE2P17, + _Enum64bitName[20:25]: Enum64bitE2P18, + _Enum64bitName[25:30]: Enum64bitE2P19, + _Enum64bitName[30:35]: Enum64bitE2P20, + _Enum64bitName[35:40]: Enum64bitE2P21, + _Enum64bitName[40:45]: Enum64bitE2P22, + _Enum64bitName[45:50]: Enum64bitE2P23, + _Enum64bitName[50:55]: Enum64bitE2P28, + _Enum64bitName[55:60]: Enum64bitE2P30, + _Enum64bitName[60:65]: Enum64bitE2P31, + _Enum64bitName[65:70]: Enum64bitE2P32, + _Enum64bitName[70:75]: Enum64bitE2P33, + _Enum64bitName[75:80]: Enum64bitE2P63, +} + +// ParseEnum64bit attempts to convert a string to a Enum64bit. +func ParseEnum64bit(name string) (Enum64bit, error) { + if x, ok := _Enum64bitValue[name]; ok { + return x, nil + } + return Enum64bit(0), fmt.Errorf("%s is not a valid Enum64bit", name) +} + +func (x Enum64bit) Ptr() *Enum64bit { + return &x +} + +// MarshalText implements the text marshaller method. +func (x Enum64bit) MarshalText() ([]byte, error) { + return []byte(x.String()), nil +} + +// UnmarshalText implements the text unmarshaller method. +func (x *Enum64bit) UnmarshalText(text []byte) error { + name := string(text) + tmp, err := ParseEnum64bit(name) + if err != nil { + return err + } + *x = tmp + return nil +} diff --git a/generator/.snapshots/generator-TestCustomPrefixExampleFile b/generator/.snapshots/generator-TestCustomPrefixExampleFile index ffa6185d..e92966fa 100644 --- a/generator/.snapshots/generator-TestCustomPrefixExampleFile +++ b/generator/.snapshots/generator-TestCustomPrefixExampleFile @@ -1,4 +1,4 @@ -([]string) (len=3055) { +([]string) (len=3377) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -1988,6 +1988,328 @@ (string) (len=1) "}", (string) "", (string) (len=7) "const (", + (string) (len=57) "\t// Custom_prefix_Unknown is a Enum64bit of type Unknown.", + (string) (len=39) "\tCustom_prefix_Unknown Enum64bit = iota", + (string) (len=53) "\t// Custom_prefix_E2P15 is a Enum64bit of type E2P15.", + (string) (len=45) "\tCustom_prefix_E2P15 Enum64bit = iota + 32767", + (string) (len=53) "\t// Custom_prefix_E2P16 is a Enum64bit of type E2P16.", + (string) (len=45) "\tCustom_prefix_E2P16 Enum64bit = iota + 65534", + (string) (len=53) "\t// Custom_prefix_E2P17 is a Enum64bit of type E2P17.", + (string) (len=46) "\tCustom_prefix_E2P17 Enum64bit = iota + 131069", + (string) (len=53) "\t// Custom_prefix_E2P18 is a Enum64bit of type E2P18.", + (string) (len=46) "\tCustom_prefix_E2P18 Enum64bit = iota + 262140", + (string) (len=53) "\t// Custom_prefix_E2P19 is a Enum64bit of type E2P19.", + (string) (len=46) "\tCustom_prefix_E2P19 Enum64bit = iota + 524283", + (string) (len=53) "\t// Custom_prefix_E2P20 is a Enum64bit of type E2P20.", + (string) (len=47) "\tCustom_prefix_E2P20 Enum64bit = iota + 1048570", + (string) (len=53) "\t// Custom_prefix_E2P21 is a Enum64bit of type E2P21.", + (string) (len=47) "\tCustom_prefix_E2P21 Enum64bit = iota + 2097145", + (string) (len=53) "\t// Custom_prefix_E2P22 is a Enum64bit of type E2P22.", + (string) (len=48) "\tCustom_prefix_E2P22 Enum64bit = iota + 33554424", + (string) (len=53) "\t// Custom_prefix_E2P23 is a Enum64bit of type E2P23.", + (string) (len=48) "\tCustom_prefix_E2P23 Enum64bit = iota + 67108855", + (string) (len=53) "\t// Custom_prefix_E2P28 is a Enum64bit of type E2P28.", + (string) (len=49) "\tCustom_prefix_E2P28 Enum64bit = iota + 536870902", + (string) (len=53) "\t// Custom_prefix_E2P30 is a Enum64bit of type E2P30.", + (string) (len=50) "\tCustom_prefix_E2P30 Enum64bit = iota + 1073741813", + (string) (len=53) "\t// Custom_prefix_E2P31 is a Enum64bit of type E2P31.", + (string) (len=50) "\tCustom_prefix_E2P31 Enum64bit = iota + 2147483636", + (string) (len=53) "\t// Custom_prefix_E2P32 is a Enum64bit of type E2P32.", + (string) (len=50) "\tCustom_prefix_E2P32 Enum64bit = iota + 4294967283", + (string) (len=53) "\t// Custom_prefix_E2P33 is a Enum64bit of type E2P33.", + (string) (len=50) "\tCustom_prefix_E2P33 Enum64bit = iota + 8454967282", + (string) (len=1) ")", + (string) "", + (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", + (string) "", + (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", + (string) (len=44) "\tCustom_prefix_Unknown: _Enum64bitName[0:7],", + (string) (len=45) "\tCustom_prefix_E2P15: _Enum64bitName[7:12],", + (string) (len=46) "\tCustom_prefix_E2P16: _Enum64bitName[12:17],", + (string) (len=46) "\tCustom_prefix_E2P17: _Enum64bitName[17:22],", + (string) (len=46) "\tCustom_prefix_E2P18: _Enum64bitName[22:27],", + (string) (len=46) "\tCustom_prefix_E2P19: _Enum64bitName[27:32],", + (string) (len=46) "\tCustom_prefix_E2P20: _Enum64bitName[32:37],", + (string) (len=46) "\tCustom_prefix_E2P21: _Enum64bitName[37:42],", + (string) (len=46) "\tCustom_prefix_E2P22: _Enum64bitName[42:47],", + (string) (len=46) "\tCustom_prefix_E2P23: _Enum64bitName[47:52],", + (string) (len=46) "\tCustom_prefix_E2P28: _Enum64bitName[52:57],", + (string) (len=46) "\tCustom_prefix_E2P30: _Enum64bitName[57:62],", + (string) (len=46) "\tCustom_prefix_E2P31: _Enum64bitName[62:67],", + (string) (len=46) "\tCustom_prefix_E2P32: _Enum64bitName[67:72],", + (string) (len=46) "\tCustom_prefix_E2P33: _Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x Enum64bit) String() string {", + (string) (len=37) "\tif str, ok := _Enum64bitMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", + (string) (len=63) "\t_Enum64bitName[0:7]: Custom_prefix_Unknown,", + (string) (len=63) "\tstrings.ToLower(_Enum64bitName[0:7]): Custom_prefix_Unknown,", + (string) (len=61) "\t_Enum64bitName[7:12]: Custom_prefix_E2P15,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[7:12]): Custom_prefix_E2P15,", + (string) (len=61) "\t_Enum64bitName[12:17]: Custom_prefix_E2P16,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[12:17]): Custom_prefix_E2P16,", + (string) (len=61) "\t_Enum64bitName[17:22]: Custom_prefix_E2P17,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[17:22]): Custom_prefix_E2P17,", + (string) (len=61) "\t_Enum64bitName[22:27]: Custom_prefix_E2P18,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[22:27]): Custom_prefix_E2P18,", + (string) (len=61) "\t_Enum64bitName[27:32]: Custom_prefix_E2P19,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[27:32]): Custom_prefix_E2P19,", + (string) (len=61) "\t_Enum64bitName[32:37]: Custom_prefix_E2P20,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[32:37]): Custom_prefix_E2P20,", + (string) (len=61) "\t_Enum64bitName[37:42]: Custom_prefix_E2P21,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[37:42]): Custom_prefix_E2P21,", + (string) (len=61) "\t_Enum64bitName[42:47]: Custom_prefix_E2P22,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[42:47]): Custom_prefix_E2P22,", + (string) (len=61) "\t_Enum64bitName[47:52]: Custom_prefix_E2P23,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[47:52]): Custom_prefix_E2P23,", + (string) (len=61) "\t_Enum64bitName[52:57]: Custom_prefix_E2P28,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[52:57]): Custom_prefix_E2P28,", + (string) (len=61) "\t_Enum64bitName[57:62]: Custom_prefix_E2P30,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[57:62]): Custom_prefix_E2P30,", + (string) (len=61) "\t_Enum64bitName[62:67]: Custom_prefix_E2P31,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[62:67]): Custom_prefix_E2P31,", + (string) (len=61) "\t_Enum64bitName[67:72]: Custom_prefix_E2P32,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[67:72]): Custom_prefix_E2P32,", + (string) (len=61) "\t_Enum64bitName[72:77]: Custom_prefix_E2P33,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[72:77]): Custom_prefix_E2P33,", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// ParseEnum64bit attempts to convert a string to a Enum64bit.", + (string) (len=53) "func ParseEnum64bit(name string) (Enum64bit, error) {", + (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=69) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=37) "func (x Enum64bit) Ptr() *Enum64bit {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=50) "func (x Enum64bit) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=54) "func (x *Enum64bit) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=33) "\ttmp, err := ParseEnum64bit(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=96) "var _Enum64bitErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=57) "func (x *Enum64bit) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=19) "\t\t*x = Enum64bit(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=13) "\tcase string:", + (string) (len=29) "\t\t*x, err = ParseEnum64bit(v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {", + (string) (len=33) "\t\t\t\t*x, err = Enum64bit(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase []byte:", + (string) (len=37) "\t\t*x, err = ParseEnum64bit(string(v))", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {", + (string) (len=33) "\t\t\t\t*x, err = Enum64bit(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=16) "\tcase Enum64bit:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=17) "\tcase *Enum64bit:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=30) "\t\t*x, err = ParseEnum64bit(*v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {", + (string) (len=33) "\t\t\t\t*x, err = Enum64bit(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=50) "func (x Enum64bit) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=43) "func (x *Enum64bit) Set(val string) error {", + (string) (len=30) "\tv, err := ParseEnum64bit(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=39) "func (x *Enum64bit) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=35) "func (x *Enum64bit) Type() string {", + (string) (len=19) "\treturn \"Enum64bit\"", + (string) (len=1) "}", + (string) "", + (string) (len=27) "type NullEnum64bit struct {", + (string) (len=20) "\tEnum64bit Enum64bit", + (string) (len=15) "\tValid bool", + (string) (len=15) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=58) "func NewNullEnum64bit(val interface{}) (x NullEnum64bit) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=61) "func (x *NullEnum64bit) Scan(value interface{}) (err error) {", + (string) (len=13) "\tx.Set = true", + (string) (len=18) "\tif value == nil {", + (string) (len=44) "\t\tx.Enum64bit, x.Valid = Enum64bit(0), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=30) "\terr = x.Enum64bit.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=54) "func (x NullEnum64bit) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=31) "\treturn int64(x.Enum64bit), nil", + (string) (len=1) "}", + (string) "", + (string) (len=60) "// MarshalJSON correctly serializes a NullEnum64bit to JSON.", + (string) (len=54) "func (n NullEnum64bit) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=34) "\t\treturn json.Marshal(n.Enum64bit)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// UnmarshalJSON correctly deserializes a NullEnum64bit from JSON.", + (string) (len=55) "func (n *NullEnum64bit) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=30) "type NullEnum64bitStr struct {", + (string) (len=14) "\tNullEnum64bit", + (string) (len=1) "}", + (string) "", + (string) (len=64) "func NewNullEnum64bitStr(val interface{}) (x NullEnum64bitStr) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=57) "func (x NullEnum64bitStr) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=33) "\treturn x.Enum64bit.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=60) "// MarshalJSON correctly serializes a NullEnum64bit to JSON.", + (string) (len=57) "func (n NullEnum64bitStr) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=34) "\t\treturn json.Marshal(n.Enum64bit)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// UnmarshalJSON correctly deserializes a NullEnum64bit from JSON.", + (string) (len=58) "func (n *NullEnum64bitStr) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", (string) (len=51) "\t// Custom_prefix_Toyota is a Model of type Toyota.", (string) (len=34) "\tCustom_prefix_Toyota Model = iota", (string) (len=18) "\t// Skipped value.", diff --git a/generator/.snapshots/generator-TestExampleFile b/generator/.snapshots/generator-TestExampleFile index 4a3028da..66263575 100644 --- a/generator/.snapshots/generator-TestExampleFile +++ b/generator/.snapshots/generator-TestExampleFile @@ -1,4 +1,4 @@ -([]string) (len=1827) { +([]string) (len=2047) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -1213,6 +1213,226 @@ (string) (len=1) "}", (string) "", (string) (len=7) "const (", + (string) (len=52) "\t// Enum64bitUnknown is a Enum64bit of type Unknown.", + (string) (len=34) "\tEnum64bitUnknown Enum64bit = iota", + (string) (len=48) "\t// Enum64bitE2P15 is a Enum64bit of type E2P15.", + (string) (len=40) "\tEnum64bitE2P15 Enum64bit = iota + 32767", + (string) (len=48) "\t// Enum64bitE2P16 is a Enum64bit of type E2P16.", + (string) (len=40) "\tEnum64bitE2P16 Enum64bit = iota + 65534", + (string) (len=48) "\t// Enum64bitE2P17 is a Enum64bit of type E2P17.", + (string) (len=41) "\tEnum64bitE2P17 Enum64bit = iota + 131069", + (string) (len=48) "\t// Enum64bitE2P18 is a Enum64bit of type E2P18.", + (string) (len=41) "\tEnum64bitE2P18 Enum64bit = iota + 262140", + (string) (len=48) "\t// Enum64bitE2P19 is a Enum64bit of type E2P19.", + (string) (len=41) "\tEnum64bitE2P19 Enum64bit = iota + 524283", + (string) (len=48) "\t// Enum64bitE2P20 is a Enum64bit of type E2P20.", + (string) (len=42) "\tEnum64bitE2P20 Enum64bit = iota + 1048570", + (string) (len=48) "\t// Enum64bitE2P21 is a Enum64bit of type E2P21.", + (string) (len=42) "\tEnum64bitE2P21 Enum64bit = iota + 2097145", + (string) (len=48) "\t// Enum64bitE2P22 is a Enum64bit of type E2P22.", + (string) (len=43) "\tEnum64bitE2P22 Enum64bit = iota + 33554424", + (string) (len=48) "\t// Enum64bitE2P23 is a Enum64bit of type E2P23.", + (string) (len=43) "\tEnum64bitE2P23 Enum64bit = iota + 67108855", + (string) (len=48) "\t// Enum64bitE2P28 is a Enum64bit of type E2P28.", + (string) (len=44) "\tEnum64bitE2P28 Enum64bit = iota + 536870902", + (string) (len=48) "\t// Enum64bitE2P30 is a Enum64bit of type E2P30.", + (string) (len=45) "\tEnum64bitE2P30 Enum64bit = iota + 1073741813", + (string) (len=48) "\t// Enum64bitE2P31 is a Enum64bit of type E2P31.", + (string) (len=45) "\tEnum64bitE2P31 Enum64bit = iota + 2147483636", + (string) (len=48) "\t// Enum64bitE2P32 is a Enum64bit of type E2P32.", + (string) (len=45) "\tEnum64bitE2P32 Enum64bit = iota + 4294967283", + (string) (len=48) "\t// Enum64bitE2P33 is a Enum64bit of type E2P33.", + (string) (len=45) "\tEnum64bitE2P33 Enum64bit = iota + 8454967282", + (string) (len=1) ")", + (string) "", + (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", + (string) "", + (string) (len=31) "var _Enum64bitNames = []string{", + (string) (len=21) "\t_Enum64bitName[0:7],", + (string) (len=22) "\t_Enum64bitName[7:12],", + (string) (len=23) "\t_Enum64bitName[12:17],", + (string) (len=23) "\t_Enum64bitName[17:22],", + (string) (len=23) "\t_Enum64bitName[22:27],", + (string) (len=23) "\t_Enum64bitName[27:32],", + (string) (len=23) "\t_Enum64bitName[32:37],", + (string) (len=23) "\t_Enum64bitName[37:42],", + (string) (len=23) "\t_Enum64bitName[42:47],", + (string) (len=23) "\t_Enum64bitName[47:52],", + (string) (len=23) "\t_Enum64bitName[52:57],", + (string) (len=23) "\t_Enum64bitName[57:62],", + (string) (len=23) "\t_Enum64bitName[62:67],", + (string) (len=23) "\t_Enum64bitName[67:72],", + (string) (len=23) "\t_Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=72) "// Enum64bitNames returns a list of possible string values of Enum64bit.", + (string) (len=32) "func Enum64bitNames() []string {", + (string) (len=44) "\ttmp := make([]string, len(_Enum64bitNames))", + (string) (len=27) "\tcopy(tmp, _Enum64bitNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", + (string) (len=39) "\tEnum64bitUnknown: _Enum64bitName[0:7],", + (string) (len=40) "\tEnum64bitE2P15: _Enum64bitName[7:12],", + (string) (len=41) "\tEnum64bitE2P16: _Enum64bitName[12:17],", + (string) (len=41) "\tEnum64bitE2P17: _Enum64bitName[17:22],", + (string) (len=41) "\tEnum64bitE2P18: _Enum64bitName[22:27],", + (string) (len=41) "\tEnum64bitE2P19: _Enum64bitName[27:32],", + (string) (len=41) "\tEnum64bitE2P20: _Enum64bitName[32:37],", + (string) (len=41) "\tEnum64bitE2P21: _Enum64bitName[37:42],", + (string) (len=41) "\tEnum64bitE2P22: _Enum64bitName[42:47],", + (string) (len=41) "\tEnum64bitE2P23: _Enum64bitName[47:52],", + (string) (len=41) "\tEnum64bitE2P28: _Enum64bitName[52:57],", + (string) (len=41) "\tEnum64bitE2P30: _Enum64bitName[57:62],", + (string) (len=41) "\tEnum64bitE2P31: _Enum64bitName[62:67],", + (string) (len=41) "\tEnum64bitE2P32: _Enum64bitName[67:72],", + (string) (len=41) "\tEnum64bitE2P33: _Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x Enum64bit) String() string {", + (string) (len=37) "\tif str, ok := _Enum64bitMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", + (string) (len=58) "\t_Enum64bitName[0:7]: Enum64bitUnknown,", + (string) (len=58) "\tstrings.ToLower(_Enum64bitName[0:7]): Enum64bitUnknown,", + (string) (len=56) "\t_Enum64bitName[7:12]: Enum64bitE2P15,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[7:12]): Enum64bitE2P15,", + (string) (len=56) "\t_Enum64bitName[12:17]: Enum64bitE2P16,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[12:17]): Enum64bitE2P16,", + (string) (len=56) "\t_Enum64bitName[17:22]: Enum64bitE2P17,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[17:22]): Enum64bitE2P17,", + (string) (len=56) "\t_Enum64bitName[22:27]: Enum64bitE2P18,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[22:27]): Enum64bitE2P18,", + (string) (len=56) "\t_Enum64bitName[27:32]: Enum64bitE2P19,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[27:32]): Enum64bitE2P19,", + (string) (len=56) "\t_Enum64bitName[32:37]: Enum64bitE2P20,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[32:37]): Enum64bitE2P20,", + (string) (len=56) "\t_Enum64bitName[37:42]: Enum64bitE2P21,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[37:42]): Enum64bitE2P21,", + (string) (len=56) "\t_Enum64bitName[42:47]: Enum64bitE2P22,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[42:47]): Enum64bitE2P22,", + (string) (len=56) "\t_Enum64bitName[47:52]: Enum64bitE2P23,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[47:52]): Enum64bitE2P23,", + (string) (len=56) "\t_Enum64bitName[52:57]: Enum64bitE2P28,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[52:57]): Enum64bitE2P28,", + (string) (len=56) "\t_Enum64bitName[57:62]: Enum64bitE2P30,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[57:62]): Enum64bitE2P30,", + (string) (len=56) "\t_Enum64bitName[62:67]: Enum64bitE2P31,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[62:67]): Enum64bitE2P31,", + (string) (len=56) "\t_Enum64bitName[67:72]: Enum64bitE2P32,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[67:72]): Enum64bitE2P32,", + (string) (len=56) "\t_Enum64bitName[72:77]: Enum64bitE2P33,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[72:77]): Enum64bitE2P33,", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// ParseEnum64bit attempts to convert a string to a Enum64bit.", + (string) (len=53) "func ParseEnum64bit(name string) (Enum64bit, error) {", + (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=57) "\tif x, ok := _Enum64bitValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=116) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit, try [%s]\", name, strings.Join(_Enum64bitNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=50) "func (x Enum64bit) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=54) "func (x *Enum64bit) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=33) "\ttmp, err := ParseEnum64bit(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=96) "var _Enum64bitErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=57) "func (x *Enum64bit) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=19) "\t\t*x = Enum64bit(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=13) "\tcase string:", + (string) (len=29) "\t\t*x, err = ParseEnum64bit(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=37) "\t\t*x, err = ParseEnum64bit(string(v))", + (string) (len=16) "\tcase Enum64bit:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=17) "\tcase *Enum64bit:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=30) "\t\t*x, err = ParseEnum64bit(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=50) "func (x Enum64bit) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", (string) (len=42) "\t// ModelToyota is a Model of type Toyota.", (string) (len=25) "\tModelToyota Model = iota", (string) (len=18) "\t// Skipped value.", diff --git a/generator/.snapshots/generator-TestNoPrefixExampleFile b/generator/.snapshots/generator-TestNoPrefixExampleFile index 03038784..4834ad98 100644 --- a/generator/.snapshots/generator-TestNoPrefixExampleFile +++ b/generator/.snapshots/generator-TestNoPrefixExampleFile @@ -1,4 +1,4 @@ -([]string) (len=993) { +([]string) (len=1128) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -674,6 +674,141 @@ (string) (len=1) "}", (string) "", (string) (len=7) "const (", + (string) (len=43) "\t// Unknown is a Enum64bit of type Unknown.", + (string) (len=25) "\tUnknown Enum64bit = iota", + (string) (len=39) "\t// E2P15 is a Enum64bit of type E2P15.", + (string) (len=31) "\tE2P15 Enum64bit = iota + 32767", + (string) (len=39) "\t// E2P16 is a Enum64bit of type E2P16.", + (string) (len=31) "\tE2P16 Enum64bit = iota + 65534", + (string) (len=39) "\t// E2P17 is a Enum64bit of type E2P17.", + (string) (len=32) "\tE2P17 Enum64bit = iota + 131069", + (string) (len=39) "\t// E2P18 is a Enum64bit of type E2P18.", + (string) (len=32) "\tE2P18 Enum64bit = iota + 262140", + (string) (len=39) "\t// E2P19 is a Enum64bit of type E2P19.", + (string) (len=32) "\tE2P19 Enum64bit = iota + 524283", + (string) (len=39) "\t// E2P20 is a Enum64bit of type E2P20.", + (string) (len=33) "\tE2P20 Enum64bit = iota + 1048570", + (string) (len=39) "\t// E2P21 is a Enum64bit of type E2P21.", + (string) (len=33) "\tE2P21 Enum64bit = iota + 2097145", + (string) (len=39) "\t// E2P22 is a Enum64bit of type E2P22.", + (string) (len=34) "\tE2P22 Enum64bit = iota + 33554424", + (string) (len=39) "\t// E2P23 is a Enum64bit of type E2P23.", + (string) (len=34) "\tE2P23 Enum64bit = iota + 67108855", + (string) (len=39) "\t// E2P28 is a Enum64bit of type E2P28.", + (string) (len=35) "\tE2P28 Enum64bit = iota + 536870902", + (string) (len=39) "\t// E2P30 is a Enum64bit of type E2P30.", + (string) (len=36) "\tE2P30 Enum64bit = iota + 1073741813", + (string) (len=39) "\t// E2P31 is a Enum64bit of type E2P31.", + (string) (len=36) "\tE2P31 Enum64bit = iota + 2147483636", + (string) (len=39) "\t// E2P32 is a Enum64bit of type E2P32.", + (string) (len=36) "\tE2P32 Enum64bit = iota + 4294967283", + (string) (len=39) "\t// E2P33 is a Enum64bit of type E2P33.", + (string) (len=36) "\tE2P33 Enum64bit = iota + 8454967282", + (string) (len=1) ")", + (string) "", + (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", + (string) "", + (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", + (string) (len=30) "\tUnknown: _Enum64bitName[0:7],", + (string) (len=31) "\tE2P15: _Enum64bitName[7:12],", + (string) (len=32) "\tE2P16: _Enum64bitName[12:17],", + (string) (len=32) "\tE2P17: _Enum64bitName[17:22],", + (string) (len=32) "\tE2P18: _Enum64bitName[22:27],", + (string) (len=32) "\tE2P19: _Enum64bitName[27:32],", + (string) (len=32) "\tE2P20: _Enum64bitName[32:37],", + (string) (len=32) "\tE2P21: _Enum64bitName[37:42],", + (string) (len=32) "\tE2P22: _Enum64bitName[42:47],", + (string) (len=32) "\tE2P23: _Enum64bitName[47:52],", + (string) (len=32) "\tE2P28: _Enum64bitName[52:57],", + (string) (len=32) "\tE2P30: _Enum64bitName[57:62],", + (string) (len=32) "\tE2P31: _Enum64bitName[62:67],", + (string) (len=32) "\tE2P32: _Enum64bitName[67:72],", + (string) (len=32) "\tE2P33: _Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x Enum64bit) String() string {", + (string) (len=37) "\tif str, ok := _Enum64bitMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", + (string) (len=49) "\t_Enum64bitName[0:7]: Unknown,", + (string) (len=49) "\tstrings.ToLower(_Enum64bitName[0:7]): Unknown,", + (string) (len=47) "\t_Enum64bitName[7:12]: E2P15,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[7:12]): E2P15,", + (string) (len=47) "\t_Enum64bitName[12:17]: E2P16,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[12:17]): E2P16,", + (string) (len=47) "\t_Enum64bitName[17:22]: E2P17,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[17:22]): E2P17,", + (string) (len=47) "\t_Enum64bitName[22:27]: E2P18,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[22:27]): E2P18,", + (string) (len=47) "\t_Enum64bitName[27:32]: E2P19,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[27:32]): E2P19,", + (string) (len=47) "\t_Enum64bitName[32:37]: E2P20,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[32:37]): E2P20,", + (string) (len=47) "\t_Enum64bitName[37:42]: E2P21,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[37:42]): E2P21,", + (string) (len=47) "\t_Enum64bitName[42:47]: E2P22,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[42:47]): E2P22,", + (string) (len=47) "\t_Enum64bitName[47:52]: E2P23,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[47:52]): E2P23,", + (string) (len=47) "\t_Enum64bitName[52:57]: E2P28,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[52:57]): E2P28,", + (string) (len=47) "\t_Enum64bitName[57:62]: E2P30,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[57:62]): E2P30,", + (string) (len=47) "\t_Enum64bitName[62:67]: E2P31,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[62:67]): E2P31,", + (string) (len=47) "\t_Enum64bitName[67:72]: E2P32,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[67:72]): E2P32,", + (string) (len=47) "\t_Enum64bitName[72:77]: E2P33,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[72:77]): E2P33,", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// ParseEnum64bit attempts to convert a string to a Enum64bit.", + (string) (len=53) "func ParseEnum64bit(name string) (Enum64bit, error) {", + (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=69) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=50) "func (x Enum64bit) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=54) "func (x *Enum64bit) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=33) "\ttmp, err := ParseEnum64bit(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=43) "func (x *Enum64bit) Set(val string) error {", + (string) (len=30) "\tv, err := ParseEnum64bit(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=39) "func (x *Enum64bit) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=35) "func (x *Enum64bit) Type() string {", + (string) (len=19) "\treturn \"Enum64bit\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", (string) (len=37) "\t// Toyota is a Model of type Toyota.", (string) (len=20) "\tToyota Model = iota", (string) (len=18) "\t// Skipped value.", diff --git a/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel b/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel index 6497e6ba..e920dd2e 100644 --- a/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel +++ b/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel @@ -1,4 +1,4 @@ -([]string) (len=993) { +([]string) (len=1128) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -674,6 +674,141 @@ (string) (len=1) "}", (string) "", (string) (len=7) "const (", + (string) (len=43) "\t// Unknown is a Enum64bit of type Unknown.", + (string) (len=25) "\tUnknown Enum64bit = iota", + (string) (len=39) "\t// E2P15 is a Enum64bit of type E2P15.", + (string) (len=31) "\tE2P15 Enum64bit = iota + 32767", + (string) (len=39) "\t// E2P16 is a Enum64bit of type E2P16.", + (string) (len=31) "\tE2P16 Enum64bit = iota + 65534", + (string) (len=39) "\t// E2P17 is a Enum64bit of type E2P17.", + (string) (len=32) "\tE2P17 Enum64bit = iota + 131069", + (string) (len=39) "\t// E2P18 is a Enum64bit of type E2P18.", + (string) (len=32) "\tE2P18 Enum64bit = iota + 262140", + (string) (len=39) "\t// E2P19 is a Enum64bit of type E2P19.", + (string) (len=32) "\tE2P19 Enum64bit = iota + 524283", + (string) (len=39) "\t// E2P20 is a Enum64bit of type E2P20.", + (string) (len=33) "\tE2P20 Enum64bit = iota + 1048570", + (string) (len=39) "\t// E2P21 is a Enum64bit of type E2P21.", + (string) (len=33) "\tE2P21 Enum64bit = iota + 2097145", + (string) (len=39) "\t// E2P22 is a Enum64bit of type E2P22.", + (string) (len=34) "\tE2P22 Enum64bit = iota + 33554424", + (string) (len=39) "\t// E2P23 is a Enum64bit of type E2P23.", + (string) (len=34) "\tE2P23 Enum64bit = iota + 67108855", + (string) (len=39) "\t// E2P28 is a Enum64bit of type E2P28.", + (string) (len=35) "\tE2P28 Enum64bit = iota + 536870902", + (string) (len=39) "\t// E2P30 is a Enum64bit of type E2P30.", + (string) (len=36) "\tE2P30 Enum64bit = iota + 1073741813", + (string) (len=39) "\t// E2P31 is a Enum64bit of type E2P31.", + (string) (len=36) "\tE2P31 Enum64bit = iota + 2147483636", + (string) (len=39) "\t// E2P32 is a Enum64bit of type E2P32.", + (string) (len=36) "\tE2P32 Enum64bit = iota + 4294967283", + (string) (len=39) "\t// E2P33 is a Enum64bit of type E2P33.", + (string) (len=36) "\tE2P33 Enum64bit = iota + 8454967282", + (string) (len=1) ")", + (string) "", + (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", + (string) "", + (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", + (string) (len=30) "\tUnknown: _Enum64bitName[0:7],", + (string) (len=31) "\tE2P15: _Enum64bitName[7:12],", + (string) (len=32) "\tE2P16: _Enum64bitName[12:17],", + (string) (len=32) "\tE2P17: _Enum64bitName[17:22],", + (string) (len=32) "\tE2P18: _Enum64bitName[22:27],", + (string) (len=32) "\tE2P19: _Enum64bitName[27:32],", + (string) (len=32) "\tE2P20: _Enum64bitName[32:37],", + (string) (len=32) "\tE2P21: _Enum64bitName[37:42],", + (string) (len=32) "\tE2P22: _Enum64bitName[42:47],", + (string) (len=32) "\tE2P23: _Enum64bitName[47:52],", + (string) (len=32) "\tE2P28: _Enum64bitName[52:57],", + (string) (len=32) "\tE2P30: _Enum64bitName[57:62],", + (string) (len=32) "\tE2P31: _Enum64bitName[62:67],", + (string) (len=32) "\tE2P32: _Enum64bitName[67:72],", + (string) (len=32) "\tE2P33: _Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x Enum64bit) String() string {", + (string) (len=37) "\tif str, ok := _Enum64bitMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", + (string) (len=49) "\t_Enum64bitName[0:7]: Unknown,", + (string) (len=49) "\tstrings.ToLower(_Enum64bitName[0:7]): Unknown,", + (string) (len=47) "\t_Enum64bitName[7:12]: E2P15,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[7:12]): E2P15,", + (string) (len=47) "\t_Enum64bitName[12:17]: E2P16,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[12:17]): E2P16,", + (string) (len=47) "\t_Enum64bitName[17:22]: E2P17,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[17:22]): E2P17,", + (string) (len=47) "\t_Enum64bitName[22:27]: E2P18,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[22:27]): E2P18,", + (string) (len=47) "\t_Enum64bitName[27:32]: E2P19,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[27:32]): E2P19,", + (string) (len=47) "\t_Enum64bitName[32:37]: E2P20,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[32:37]): E2P20,", + (string) (len=47) "\t_Enum64bitName[37:42]: E2P21,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[37:42]): E2P21,", + (string) (len=47) "\t_Enum64bitName[42:47]: E2P22,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[42:47]): E2P22,", + (string) (len=47) "\t_Enum64bitName[47:52]: E2P23,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[47:52]): E2P23,", + (string) (len=47) "\t_Enum64bitName[52:57]: E2P28,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[52:57]): E2P28,", + (string) (len=47) "\t_Enum64bitName[57:62]: E2P30,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[57:62]): E2P30,", + (string) (len=47) "\t_Enum64bitName[62:67]: E2P31,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[62:67]): E2P31,", + (string) (len=47) "\t_Enum64bitName[67:72]: E2P32,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[67:72]): E2P32,", + (string) (len=47) "\t_Enum64bitName[72:77]: E2P33,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[72:77]): E2P33,", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// ParseEnum64bit attempts to convert a string to a Enum64bit.", + (string) (len=53) "func ParseEnum64bit(name string) (Enum64bit, error) {", + (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=69) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=50) "func (x Enum64bit) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=54) "func (x *Enum64bit) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=33) "\ttmp, err := ParseEnum64bit(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=43) "func (x *Enum64bit) Set(val string) error {", + (string) (len=30) "\tv, err := ParseEnum64bit(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=39) "func (x *Enum64bit) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=35) "func (x *Enum64bit) Type() string {", + (string) (len=19) "\treturn \"Enum64bit\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", (string) (len=37) "\t// Toyota is a Model of type Toyota.", (string) (len=20) "\tToyota Model = iota", (string) (len=18) "\t// Skipped value.", diff --git a/generator/example_test.go b/generator/example_test.go index 535aa843..4dc49f76 100644 --- a/generator/example_test.go +++ b/generator/example_test.go @@ -102,3 +102,23 @@ Green = 33 // Green starts with 33 // red-orange // has a , in it!?! // ) type ColorWithComment4 int + +/* ENUM( +Unknown= 0 +E2P15 = 32768 +E2P16 = 65536 +E2P17 = 131072 +E2P18 = 262144 +E2P19 = 524288 +E2P20 = 1048576 +E2P21 = 2097152 +E2P22 = 33554432 +E2P23 = 67108864 +E2P28 = 536870912 +E2P30 = 1073741824 +E2P31 = 2147483648 +E2P32 = 4294967296 +E2P33 = 8454967296 +) +*/ +type Enum64bit uint64 diff --git a/generator/generator.go b/generator/generator.go index b8329a67..a02deb0d 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -66,7 +66,7 @@ type EnumValue struct { RawName string Name string PrefixedName string - Value int + Value uint64 Comment string } @@ -339,7 +339,7 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { enumDecl := getEnumDeclFromComments(ts.Doc.List) values := strings.Split(strings.TrimSuffix(strings.TrimPrefix(enumDecl, `ENUM(`), `)`), `,`) - data := 0 + var data uint64 for _, value := range values { var comment string @@ -359,11 +359,13 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { equalIndex := strings.Index(value, `=`) dataVal := strings.TrimSpace(value[equalIndex+1:]) if dataVal != "" { - newData, err := strconv.ParseInt(dataVal, 10, 32) + newData, err := strconv.ParseUint(dataVal, 10, 64) if err != nil { - return nil, errors.Wrapf(err, "failed parsing the data part of enum value '%s'", value) + err = errors.Wrapf(err, "failed parsing the data part of enum value '%s'", value) + fmt.Println(err) + return nil, err } - data = int(newData) + data = newData value = value[:equalIndex] } else { value = strings.TrimSuffix(value, `=`) From 7e2e8bcd629be550028ecfcdc51cc0199ca124ad Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Sun, 20 Mar 2022 08:20:50 -0700 Subject: [PATCH 30/91] Change generated binary to 1.18 (#91) * Update to support go 1.18 stuff * add new tests * change release to use 1.18 * fix older versions * drop support of 1.13 * up the code coverage --- .github/workflows/build_and_test.yml | 2 +- .github/workflows/release.yml | 2 +- Makefile | 13 +- example/enum_32_bit.go | 2 +- example/enum_32_bit_enum.go | 45 +- example/enum_32_bit_test.go | 45 + example/enum_64_bit.go | 2 +- example/enum_64_bit_enum.go | 49 +- example/enum_64_bit_test.go | 45 + example/force_lower_test.go | 7 + example/user_template_test.go | 8 + .../Test118CustomPrefixExampleFile-1.18 | 282 ++ ...File => Test118CustomPrefixExampleFile-og} | 0 generator/.snapshots/Test118ExampleFile-1.18 | 166 + ...-TestExampleFile => Test118ExampleFile-og} | 0 .../Test118NoPrefixExampleFile-1.18 | 90 + ...mpleFile => Test118NoPrefixExampleFile-og} | 0 ...18NoPrefixExampleFileWithSnakeToCamel-1.18 | 90 + ...118NoPrefixExampleFileWithSnakeToCamel-og} | 0 .../.snapshots/TestCustomPrefixExampleFile | 3379 +++++++++++++++++ generator/.snapshots/TestExampleFile | 2049 ++++++++++ generator/.snapshots/TestNoPrefixExampleFile | 1130 ++++++ .../TestNoPrefixExampleFileWithSnakeToCamel | 1130 ++++++ generator/example_1.18_test.go | 22 + generator/generator_1.18_test.go | 208 + generator/generator_test.go | 15 +- go.mod | 31 +- 27 files changed, 8749 insertions(+), 63 deletions(-) create mode 100644 example/enum_32_bit_test.go create mode 100644 example/enum_64_bit_test.go create mode 100644 generator/.snapshots/Test118CustomPrefixExampleFile-1.18 rename generator/.snapshots/{generator-TestCustomPrefixExampleFile => Test118CustomPrefixExampleFile-og} (100%) create mode 100644 generator/.snapshots/Test118ExampleFile-1.18 rename generator/.snapshots/{generator-TestExampleFile => Test118ExampleFile-og} (100%) create mode 100644 generator/.snapshots/Test118NoPrefixExampleFile-1.18 rename generator/.snapshots/{generator-TestNoPrefixExampleFile => Test118NoPrefixExampleFile-og} (100%) create mode 100644 generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-1.18 rename generator/.snapshots/{generator-TestNoPrefixExampleFileWithSnakeToCamel => Test118NoPrefixExampleFileWithSnakeToCamel-og} (100%) create mode 100644 generator/.snapshots/TestCustomPrefixExampleFile create mode 100644 generator/.snapshots/TestExampleFile create mode 100644 generator/.snapshots/TestNoPrefixExampleFile create mode 100644 generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel create mode 100644 generator/example_1.18_test.go create mode 100644 generator/generator_1.18_test.go diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 6baae618..0860fc44 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -14,7 +14,7 @@ jobs: matrix: go: # Drop support of go 1.12 - - "1.13" + # Drop support of go 1.13 - "1.14" - "1.15" - "1.16" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2db14eed..942fde64 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,7 +17,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v2 with: - go-version: 1.16 + go-version: 1.18 - name: Cache Go modules uses: actions/cache@v1 diff --git a/Makefile b/Makefile index ae6caf62..96cf2b4f 100644 --- a/Makefile +++ b/Makefile @@ -48,7 +48,7 @@ build: deps $(GO) build -v -o bin/go-enum -ldflags='-X "main.version=example" -X "main.commit=example" -X "main.date=example" -X "main.builtBy=example"' . fmt: - gofmt -l -w -s $$(find . -type f -name '*.go' -not -path "./vendor/*") + -$(GO) fmt ./... test: gen-test generate $(GO) test -v -race -coverprofile=coverage.out ./... @@ -104,3 +104,14 @@ bin/go-bindata: go.sum generate1_15: generator/assets/assets.go generator/enum.tmpl docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:1.15 -c 'make clean $(GOBINDATA) && $(GO) generate ./generator && make clean' + +.PHONY: ci +ci: docker_1.14 +ci: docker_1.15 +ci: docker_1.16 +ci: docker_1.17 +ci: docker_1.18 + +docker_%: + echo "##### testing golang $* #####" + docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:$* -c 'make clean && make' diff --git a/example/enum_32_bit.go b/example/enum_32_bit.go index 5ceaf412..7b86b74d 100644 --- a/example/enum_32_bit.go +++ b/example/enum_32_bit.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE --ptr --marshal +//go:generate ../bin/go-enum -f=$GOFILE --names package example diff --git a/example/enum_32_bit_enum.go b/example/enum_32_bit_enum.go index 4431109c..aac57aa7 100644 --- a/example/enum_32_bit_enum.go +++ b/example/enum_32_bit_enum.go @@ -8,6 +8,7 @@ package example import ( "fmt" + "strings" ) const ( @@ -39,6 +40,28 @@ const ( const _Enum32bitName = "UnknoE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30" +var _Enum32bitNames = []string{ + _Enum32bitName[0:5], + _Enum32bitName[5:10], + _Enum32bitName[10:15], + _Enum32bitName[15:20], + _Enum32bitName[20:25], + _Enum32bitName[25:30], + _Enum32bitName[30:35], + _Enum32bitName[35:40], + _Enum32bitName[40:45], + _Enum32bitName[45:50], + _Enum32bitName[50:55], + _Enum32bitName[55:60], +} + +// Enum32bitNames returns a list of possible string values of Enum32bit. +func Enum32bitNames() []string { + tmp := make([]string, len(_Enum32bitNames)) + copy(tmp, _Enum32bitNames) + return tmp +} + var _Enum32bitMap = map[Enum32bit]string{ Enum32bitUnkno: _Enum32bitName[0:5], Enum32bitE2P15: _Enum32bitName[5:10], @@ -82,25 +105,5 @@ func ParseEnum32bit(name string) (Enum32bit, error) { if x, ok := _Enum32bitValue[name]; ok { return x, nil } - return Enum32bit(0), fmt.Errorf("%s is not a valid Enum32bit", name) -} - -func (x Enum32bit) Ptr() *Enum32bit { - return &x -} - -// MarshalText implements the text marshaller method. -func (x Enum32bit) MarshalText() ([]byte, error) { - return []byte(x.String()), nil -} - -// UnmarshalText implements the text unmarshaller method. -func (x *Enum32bit) UnmarshalText(text []byte) error { - name := string(text) - tmp, err := ParseEnum32bit(name) - if err != nil { - return err - } - *x = tmp - return nil + return Enum32bit(0), fmt.Errorf("%s is not a valid Enum32bit, try [%s]", name, strings.Join(_Enum32bitNames, ", ")) } diff --git a/example/enum_32_bit_test.go b/example/enum_32_bit_test.go new file mode 100644 index 00000000..23bad207 --- /dev/null +++ b/example/enum_32_bit_test.go @@ -0,0 +1,45 @@ +package example + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestEnum32Bit(t *testing.T) { + + tests := map[string]struct { + input string + output Enum32bit + }{ + "E2P15": { + input: `E2P15`, + output: Enum32bitE2P15, + }, + "E2P30": { + input: `E2P30`, + output: Enum32bitE2P30, + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + output, err := ParseEnum32bit(tc.input) + assert.NoError(t, err) + assert.Equal(t, tc.output, output) + + assert.Equal(t, tc.input, output.String()) + }) + } + + t.Run("basics", func(t *testing.T) { + assert.Equal(t, "E2P23", Enum32bitE2P23.String()) + assert.Equal(t, "Enum32bit(99)", Enum32bit(99).String()) + _, err := ParseEnum32bit("-1") + assert.Error(t, err) + + names := Enum32bitNames() + assert.Len(t, names, 12) + }) + +} diff --git a/example/enum_64_bit.go b/example/enum_64_bit.go index a5af3250..6b8bbce4 100644 --- a/example/enum_64_bit.go +++ b/example/enum_64_bit.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE --ptr --marshal +//go:generate ../bin/go-enum -f=$GOFILE --names package example diff --git a/example/enum_64_bit_enum.go b/example/enum_64_bit_enum.go index 66413fe1..c2cbc991 100644 --- a/example/enum_64_bit_enum.go +++ b/example/enum_64_bit_enum.go @@ -8,6 +8,7 @@ package example import ( "fmt" + "strings" ) const ( @@ -47,6 +48,32 @@ const ( const _Enum64bitName = "UnknoE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33E2P63" +var _Enum64bitNames = []string{ + _Enum64bitName[0:5], + _Enum64bitName[5:10], + _Enum64bitName[10:15], + _Enum64bitName[15:20], + _Enum64bitName[20:25], + _Enum64bitName[25:30], + _Enum64bitName[30:35], + _Enum64bitName[35:40], + _Enum64bitName[40:45], + _Enum64bitName[45:50], + _Enum64bitName[50:55], + _Enum64bitName[55:60], + _Enum64bitName[60:65], + _Enum64bitName[65:70], + _Enum64bitName[70:75], + _Enum64bitName[75:80], +} + +// Enum64bitNames returns a list of possible string values of Enum64bit. +func Enum64bitNames() []string { + tmp := make([]string, len(_Enum64bitNames)) + copy(tmp, _Enum64bitNames) + return tmp +} + var _Enum64bitMap = map[Enum64bit]string{ Enum64bitUnkno: _Enum64bitName[0:5], Enum64bitE2P15: _Enum64bitName[5:10], @@ -98,25 +125,5 @@ func ParseEnum64bit(name string) (Enum64bit, error) { if x, ok := _Enum64bitValue[name]; ok { return x, nil } - return Enum64bit(0), fmt.Errorf("%s is not a valid Enum64bit", name) -} - -func (x Enum64bit) Ptr() *Enum64bit { - return &x -} - -// MarshalText implements the text marshaller method. -func (x Enum64bit) MarshalText() ([]byte, error) { - return []byte(x.String()), nil -} - -// UnmarshalText implements the text unmarshaller method. -func (x *Enum64bit) UnmarshalText(text []byte) error { - name := string(text) - tmp, err := ParseEnum64bit(name) - if err != nil { - return err - } - *x = tmp - return nil + return Enum64bit(0), fmt.Errorf("%s is not a valid Enum64bit, try [%s]", name, strings.Join(_Enum64bitNames, ", ")) } diff --git a/example/enum_64_bit_test.go b/example/enum_64_bit_test.go new file mode 100644 index 00000000..6e689be4 --- /dev/null +++ b/example/enum_64_bit_test.go @@ -0,0 +1,45 @@ +package example + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestEnum64Bit(t *testing.T) { + + tests := map[string]struct { + input string + output Enum64bit + }{ + "E2P15": { + input: `E2P15`, + output: Enum64bitE2P15, + }, + "E2P63": { + input: `E2P63`, + output: Enum64bitE2P63, + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + output, err := ParseEnum64bit(tc.input) + assert.NoError(t, err) + assert.Equal(t, tc.output, output) + + assert.Equal(t, tc.input, output.String()) + }) + } + + t.Run("basics", func(t *testing.T) { + assert.Equal(t, "E2P23", Enum64bitE2P23.String()) + assert.Equal(t, "Enum64bit(99)", Enum64bit(99).String()) + _, err := ParseEnum64bit("-1") + assert.Error(t, err) + + names := Enum64bitNames() + assert.Len(t, names, 16) + }) + +} diff --git a/example/force_lower_test.go b/example/force_lower_test.go index 6ec9460a..49d03bd9 100644 --- a/example/force_lower_test.go +++ b/example/force_lower_test.go @@ -31,4 +31,11 @@ func TestForceLowerString(t *testing.T) { assert.Equal(t, tc.input, output.String()) }) } + + t.Run("failures", func(t *testing.T) { + assert.Equal(t, "ForceLowerType(99)", ForceLowerType(99).String()) + _, err := ParseForceLowerType("-1") + assert.Error(t, err) + + }) } diff --git a/example/user_template_test.go b/example/user_template_test.go index c206c292..b6c0fa30 100644 --- a/example/user_template_test.go +++ b/example/user_template_test.go @@ -11,4 +11,12 @@ func TestUserTemplateColor(t *testing.T) { assert.Equal(t, true, ParseOceanColorExample()) assert.Equal(t, true, ParseOceanColorGlobbedExample()) assert.Equal(t, true, ParseOceanColorGlobbedExample2()) + + val, err := ParseOceanColor("Cerulean") + assert.NoError(t, err) + assert.Equal(t, "Cerulean", val.String()) + + assert.Equal(t, "OceanColor(99)", OceanColor(99).String()) + _, err = ParseOceanColor("-1") + assert.Error(t, err) } diff --git a/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 b/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 new file mode 100644 index 00000000..fa47f5ab --- /dev/null +++ b/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 @@ -0,0 +1,282 @@ +([]string) (len=280) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", + (string) "", + (string) (len=17) "package generator", + (string) "", + (string) (len=8) "import (", + (string) (len=22) "\t\"database/sql/driver\"", + (string) (len=16) "\t\"encoding/json\"", + (string) (len=6) "\t\"fmt\"", + (string) (len=10) "\t\"strconv\"", + (string) (len=10) "\t\"strings\"", + (string) "", + (string) (len=24) "\t\"github.com/pkg/errors\"", + (string) (len=1) ")", + (string) "", + (string) (len=7) "const (", + (string) (len=56) "\t// Custom_prefix_Create is a ChangeType of type Create.", + (string) (len=39) "\tCustom_prefix_Create ChangeType = iota", + (string) (len=56) "\t// Custom_prefix_Update is a ChangeType of type Update.", + (string) (len=21) "\tCustom_prefix_Update", + (string) (len=56) "\t// Custom_prefix_Delete is a ChangeType of type Delete.", + (string) (len=21) "\tCustom_prefix_Delete", + (string) (len=1) ")", + (string) "", + (string) (len=44) "const _ChangeTypeName = \"CreateUpdateDelete\"", + (string) "", + (string) (len=43) "var _ChangeTypeMap = map[ChangeType]string{", + (string) (len=44) "\tCustom_prefix_Create: _ChangeTypeName[0:6],", + (string) (len=45) "\tCustom_prefix_Update: _ChangeTypeName[6:12],", + (string) (len=46) "\tCustom_prefix_Delete: _ChangeTypeName[12:18],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x ChangeType) String() string {", + (string) (len=38) "\tif str, ok := _ChangeTypeMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=40) "\treturn fmt.Sprintf(\"ChangeType(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _ChangeTypeValue = map[string]ChangeType{", + (string) (len=63) "\t_ChangeTypeName[0:6]: Custom_prefix_Create,", + (string) (len=63) "\tstrings.ToLower(_ChangeTypeName[0:6]): Custom_prefix_Create,", + (string) (len=63) "\t_ChangeTypeName[6:12]: Custom_prefix_Update,", + (string) (len=63) "\tstrings.ToLower(_ChangeTypeName[6:12]): Custom_prefix_Update,", + (string) (len=63) "\t_ChangeTypeName[12:18]: Custom_prefix_Delete,", + (string) (len=63) "\tstrings.ToLower(_ChangeTypeName[12:18]): Custom_prefix_Delete,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseChangeType attempts to convert a string to a ChangeType.", + (string) (len=55) "func ParseChangeType(name string) (ChangeType, error) {", + (string) (len=41) "\tif x, ok := _ChangeTypeValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=71) "\treturn ChangeType(0), fmt.Errorf(\"%s is not a valid ChangeType\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=39) "func (x ChangeType) Ptr() *ChangeType {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x ChangeType) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *ChangeType) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=34) "\ttmp, err := ParseChangeType(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=97) "var _ChangeTypeErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *ChangeType) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=20) "\t\t*x = ChangeType(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=20) "\t\t*x = ChangeType(v)", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseChangeType(v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {", + (string) (len=34) "\t\t\t\t*x, err = ChangeType(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase []byte:", + (string) (len=38) "\t\t*x, err = ParseChangeType(string(v))", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {", + (string) (len=34) "\t\t\t\t*x, err = ChangeType(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=17) "\tcase ChangeType:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=20) "\t\t*x = ChangeType(v)", + (string) (len=18) "\tcase *ChangeType:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=20) "\t\t*x = ChangeType(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=20) "\t\t*x = ChangeType(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = ChangeType(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = ChangeType(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=20) "\t\t*x = ChangeType(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = ChangeType(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = ChangeType(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = ChangeType(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseChangeType(*v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {", + (string) (len=34) "\t\t\t\t*x, err = ChangeType(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x ChangeType) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=44) "func (x *ChangeType) Set(val string) error {", + (string) (len=31) "\tv, err := ParseChangeType(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=40) "func (x *ChangeType) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=36) "func (x *ChangeType) Type() string {", + (string) (len=20) "\treturn \"ChangeType\"", + (string) (len=1) "}", + (string) "", + (string) (len=28) "type NullChangeType struct {", + (string) (len=22) "\tChangeType ChangeType", + (string) (len=16) "\tValid bool", + (string) (len=16) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=60) "func NewNullChangeType(val interface{}) (x NullChangeType) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=62) "func (x *NullChangeType) Scan(value interface{}) (err error) {", + (string) (len=13) "\tx.Set = true", + (string) (len=18) "\tif value == nil {", + (string) (len=46) "\t\tx.ChangeType, x.Valid = ChangeType(0), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=31) "\terr = x.ChangeType.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=55) "func (x NullChangeType) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=32) "\treturn int64(x.ChangeType), nil", + (string) (len=1) "}", + (string) "", + (string) (len=61) "// MarshalJSON correctly serializes a NullChangeType to JSON.", + (string) (len=55) "func (n NullChangeType) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=35) "\t\treturn json.Marshal(n.ChangeType)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=67) "// UnmarshalJSON correctly deserializes a NullChangeType from JSON.", + (string) (len=56) "func (n *NullChangeType) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=31) "type NullChangeTypeStr struct {", + (string) (len=15) "\tNullChangeType", + (string) (len=1) "}", + (string) "", + (string) (len=66) "func NewNullChangeTypeStr(val interface{}) (x NullChangeTypeStr) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x NullChangeTypeStr) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=34) "\treturn x.ChangeType.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=61) "// MarshalJSON correctly serializes a NullChangeType to JSON.", + (string) (len=58) "func (n NullChangeTypeStr) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=35) "\t\treturn json.Marshal(n.ChangeType)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=67) "// UnmarshalJSON correctly deserializes a NullChangeType from JSON.", + (string) (len=59) "func (n *NullChangeTypeStr) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "" +} diff --git a/generator/.snapshots/generator-TestCustomPrefixExampleFile b/generator/.snapshots/Test118CustomPrefixExampleFile-og similarity index 100% rename from generator/.snapshots/generator-TestCustomPrefixExampleFile rename to generator/.snapshots/Test118CustomPrefixExampleFile-og diff --git a/generator/.snapshots/Test118ExampleFile-1.18 b/generator/.snapshots/Test118ExampleFile-1.18 new file mode 100644 index 00000000..8974ef8c --- /dev/null +++ b/generator/.snapshots/Test118ExampleFile-1.18 @@ -0,0 +1,166 @@ +([]string) (len=164) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", + (string) "", + (string) (len=17) "package generator", + (string) "", + (string) (len=8) "import (", + (string) (len=22) "\t\"database/sql/driver\"", + (string) (len=6) "\t\"fmt\"", + (string) (len=10) "\t\"strings\"", + (string) "", + (string) (len=24) "\t\"github.com/pkg/errors\"", + (string) (len=1) ")", + (string) "", + (string) (len=7) "const (", + (string) (len=52) "\t// ChangeTypeCreate is a ChangeType of type Create.", + (string) (len=35) "\tChangeTypeCreate ChangeType = iota", + (string) (len=52) "\t// ChangeTypeUpdate is a ChangeType of type Update.", + (string) (len=17) "\tChangeTypeUpdate", + (string) (len=52) "\t// ChangeTypeDelete is a ChangeType of type Delete.", + (string) (len=17) "\tChangeTypeDelete", + (string) (len=1) ")", + (string) "", + (string) (len=44) "const _ChangeTypeName = \"CreateUpdateDelete\"", + (string) "", + (string) (len=32) "var _ChangeTypeNames = []string{", + (string) (len=22) "\t_ChangeTypeName[0:6],", + (string) (len=23) "\t_ChangeTypeName[6:12],", + (string) (len=24) "\t_ChangeTypeName[12:18],", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// ChangeTypeNames returns a list of possible string values of ChangeType.", + (string) (len=33) "func ChangeTypeNames() []string {", + (string) (len=45) "\ttmp := make([]string, len(_ChangeTypeNames))", + (string) (len=28) "\tcopy(tmp, _ChangeTypeNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _ChangeTypeMap = map[ChangeType]string{", + (string) (len=40) "\tChangeTypeCreate: _ChangeTypeName[0:6],", + (string) (len=41) "\tChangeTypeUpdate: _ChangeTypeName[6:12],", + (string) (len=42) "\tChangeTypeDelete: _ChangeTypeName[12:18],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x ChangeType) String() string {", + (string) (len=38) "\tif str, ok := _ChangeTypeMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=40) "\treturn fmt.Sprintf(\"ChangeType(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _ChangeTypeValue = map[string]ChangeType{", + (string) (len=59) "\t_ChangeTypeName[0:6]: ChangeTypeCreate,", + (string) (len=59) "\tstrings.ToLower(_ChangeTypeName[0:6]): ChangeTypeCreate,", + (string) (len=59) "\t_ChangeTypeName[6:12]: ChangeTypeUpdate,", + (string) (len=59) "\tstrings.ToLower(_ChangeTypeName[6:12]): ChangeTypeUpdate,", + (string) (len=59) "\t_ChangeTypeName[12:18]: ChangeTypeDelete,", + (string) (len=59) "\tstrings.ToLower(_ChangeTypeName[12:18]): ChangeTypeDelete,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseChangeType attempts to convert a string to a ChangeType.", + (string) (len=55) "func ParseChangeType(name string) (ChangeType, error) {", + (string) (len=41) "\tif x, ok := _ChangeTypeValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=58) "\tif x, ok := _ChangeTypeValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=119) "\treturn ChangeType(0), fmt.Errorf(\"%s is not a valid ChangeType, try [%s]\", name, strings.Join(_ChangeTypeNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x ChangeType) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *ChangeType) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=34) "\ttmp, err := ParseChangeType(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=97) "var _ChangeTypeErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *ChangeType) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=20) "\t\t*x = ChangeType(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=20) "\t\t*x = ChangeType(v)", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseChangeType(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=38) "\t\t*x, err = ParseChangeType(string(v))", + (string) (len=17) "\tcase ChangeType:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=20) "\t\t*x = ChangeType(v)", + (string) (len=18) "\tcase *ChangeType:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=20) "\t\t*x = ChangeType(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=20) "\t\t*x = ChangeType(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = ChangeType(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = ChangeType(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=20) "\t\t*x = ChangeType(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = ChangeType(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = ChangeType(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = ChangeType(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseChangeType(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x ChangeType) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "" +} diff --git a/generator/.snapshots/generator-TestExampleFile b/generator/.snapshots/Test118ExampleFile-og similarity index 100% rename from generator/.snapshots/generator-TestExampleFile rename to generator/.snapshots/Test118ExampleFile-og diff --git a/generator/.snapshots/Test118NoPrefixExampleFile-1.18 b/generator/.snapshots/Test118NoPrefixExampleFile-1.18 new file mode 100644 index 00000000..1d0af22b --- /dev/null +++ b/generator/.snapshots/Test118NoPrefixExampleFile-1.18 @@ -0,0 +1,90 @@ +([]string) (len=88) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", + (string) "", + (string) (len=17) "package generator", + (string) "", + (string) (len=8) "import (", + (string) (len=6) "\t\"fmt\"", + (string) (len=10) "\t\"strings\"", + (string) (len=1) ")", + (string) "", + (string) (len=7) "const (", + (string) (len=42) "\t// Create is a ChangeType of type Create.", + (string) (len=25) "\tCreate ChangeType = iota", + (string) (len=42) "\t// Update is a ChangeType of type Update.", + (string) (len=7) "\tUpdate", + (string) (len=42) "\t// Delete is a ChangeType of type Delete.", + (string) (len=7) "\tDelete", + (string) (len=1) ")", + (string) "", + (string) (len=44) "const _ChangeTypeName = \"CreateUpdateDelete\"", + (string) "", + (string) (len=43) "var _ChangeTypeMap = map[ChangeType]string{", + (string) (len=30) "\tCreate: _ChangeTypeName[0:6],", + (string) (len=31) "\tUpdate: _ChangeTypeName[6:12],", + (string) (len=32) "\tDelete: _ChangeTypeName[12:18],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x ChangeType) String() string {", + (string) (len=38) "\tif str, ok := _ChangeTypeMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=40) "\treturn fmt.Sprintf(\"ChangeType(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _ChangeTypeValue = map[string]ChangeType{", + (string) (len=49) "\t_ChangeTypeName[0:6]: Create,", + (string) (len=49) "\tstrings.ToLower(_ChangeTypeName[0:6]): Create,", + (string) (len=49) "\t_ChangeTypeName[6:12]: Update,", + (string) (len=49) "\tstrings.ToLower(_ChangeTypeName[6:12]): Update,", + (string) (len=49) "\t_ChangeTypeName[12:18]: Delete,", + (string) (len=49) "\tstrings.ToLower(_ChangeTypeName[12:18]): Delete,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseChangeType attempts to convert a string to a ChangeType.", + (string) (len=55) "func ParseChangeType(name string) (ChangeType, error) {", + (string) (len=41) "\tif x, ok := _ChangeTypeValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=71) "\treturn ChangeType(0), fmt.Errorf(\"%s is not a valid ChangeType\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x ChangeType) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *ChangeType) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=34) "\ttmp, err := ParseChangeType(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=44) "func (x *ChangeType) Set(val string) error {", + (string) (len=31) "\tv, err := ParseChangeType(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=40) "func (x *ChangeType) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=36) "func (x *ChangeType) Type() string {", + (string) (len=20) "\treturn \"ChangeType\"", + (string) (len=1) "}", + (string) "" +} diff --git a/generator/.snapshots/generator-TestNoPrefixExampleFile b/generator/.snapshots/Test118NoPrefixExampleFile-og similarity index 100% rename from generator/.snapshots/generator-TestNoPrefixExampleFile rename to generator/.snapshots/Test118NoPrefixExampleFile-og diff --git a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-1.18 b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-1.18 new file mode 100644 index 00000000..1d0af22b --- /dev/null +++ b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-1.18 @@ -0,0 +1,90 @@ +([]string) (len=88) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", + (string) "", + (string) (len=17) "package generator", + (string) "", + (string) (len=8) "import (", + (string) (len=6) "\t\"fmt\"", + (string) (len=10) "\t\"strings\"", + (string) (len=1) ")", + (string) "", + (string) (len=7) "const (", + (string) (len=42) "\t// Create is a ChangeType of type Create.", + (string) (len=25) "\tCreate ChangeType = iota", + (string) (len=42) "\t// Update is a ChangeType of type Update.", + (string) (len=7) "\tUpdate", + (string) (len=42) "\t// Delete is a ChangeType of type Delete.", + (string) (len=7) "\tDelete", + (string) (len=1) ")", + (string) "", + (string) (len=44) "const _ChangeTypeName = \"CreateUpdateDelete\"", + (string) "", + (string) (len=43) "var _ChangeTypeMap = map[ChangeType]string{", + (string) (len=30) "\tCreate: _ChangeTypeName[0:6],", + (string) (len=31) "\tUpdate: _ChangeTypeName[6:12],", + (string) (len=32) "\tDelete: _ChangeTypeName[12:18],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x ChangeType) String() string {", + (string) (len=38) "\tif str, ok := _ChangeTypeMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=40) "\treturn fmt.Sprintf(\"ChangeType(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _ChangeTypeValue = map[string]ChangeType{", + (string) (len=49) "\t_ChangeTypeName[0:6]: Create,", + (string) (len=49) "\tstrings.ToLower(_ChangeTypeName[0:6]): Create,", + (string) (len=49) "\t_ChangeTypeName[6:12]: Update,", + (string) (len=49) "\tstrings.ToLower(_ChangeTypeName[6:12]): Update,", + (string) (len=49) "\t_ChangeTypeName[12:18]: Delete,", + (string) (len=49) "\tstrings.ToLower(_ChangeTypeName[12:18]): Delete,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseChangeType attempts to convert a string to a ChangeType.", + (string) (len=55) "func ParseChangeType(name string) (ChangeType, error) {", + (string) (len=41) "\tif x, ok := _ChangeTypeValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=71) "\treturn ChangeType(0), fmt.Errorf(\"%s is not a valid ChangeType\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x ChangeType) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *ChangeType) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=34) "\ttmp, err := ParseChangeType(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=44) "func (x *ChangeType) Set(val string) error {", + (string) (len=31) "\tv, err := ParseChangeType(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=40) "func (x *ChangeType) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=36) "func (x *ChangeType) Type() string {", + (string) (len=20) "\treturn \"ChangeType\"", + (string) (len=1) "}", + (string) "" +} diff --git a/generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og similarity index 100% rename from generator/.snapshots/generator-TestNoPrefixExampleFileWithSnakeToCamel rename to generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og diff --git a/generator/.snapshots/TestCustomPrefixExampleFile b/generator/.snapshots/TestCustomPrefixExampleFile new file mode 100644 index 00000000..e92966fa --- /dev/null +++ b/generator/.snapshots/TestCustomPrefixExampleFile @@ -0,0 +1,3379 @@ +([]string) (len=3377) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", + (string) "", + (string) (len=17) "package generator", + (string) "", + (string) (len=8) "import (", + (string) (len=22) "\t\"database/sql/driver\"", + (string) (len=16) "\t\"encoding/json\"", + (string) (len=6) "\t\"fmt\"", + (string) (len=10) "\t\"strconv\"", + (string) (len=10) "\t\"strings\"", + (string) "", + (string) (len=24) "\t\"github.com/pkg/errors\"", + (string) (len=1) ")", + (string) "", + (string) (len=7) "const (", + (string) (len=46) "\t// Custom_prefix_Cat is a Animal of type Cat.", + (string) (len=32) "\tCustom_prefix_Cat Animal = iota", + (string) (len=46) "\t// Custom_prefix_Dog is a Animal of type Dog.", + (string) (len=18) "\tCustom_prefix_Dog", + (string) (len=48) "\t// Custom_prefix_Fish is a Animal of type Fish.", + (string) (len=19) "\tCustom_prefix_Fish", + (string) (len=1) ")", + (string) "", + (string) (len=32) "const _AnimalName = \"CatDogFish\"", + (string) "", + (string) (len=35) "var _AnimalMap = map[Animal]string{", + (string) (len=38) "\tCustom_prefix_Cat: _AnimalName[0:3],", + (string) (len=38) "\tCustom_prefix_Dog: _AnimalName[3:6],", + (string) (len=39) "\tCustom_prefix_Fish: _AnimalName[6:10],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=33) "func (x Animal) String() string {", + (string) (len=34) "\tif str, ok := _AnimalMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=37) "var _AnimalValue = map[string]Animal{", + (string) (len=55) "\t_AnimalName[0:3]: Custom_prefix_Cat,", + (string) (len=55) "\tstrings.ToLower(_AnimalName[0:3]): Custom_prefix_Cat,", + (string) (len=55) "\t_AnimalName[3:6]: Custom_prefix_Dog,", + (string) (len=55) "\tstrings.ToLower(_AnimalName[3:6]): Custom_prefix_Dog,", + (string) (len=56) "\t_AnimalName[6:10]: Custom_prefix_Fish,", + (string) (len=56) "\tstrings.ToLower(_AnimalName[6:10]): Custom_prefix_Fish,", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// ParseAnimal attempts to convert a string to a Animal.", + (string) (len=47) "func ParseAnimal(name string) (Animal, error) {", + (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=63) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=31) "func (x Animal) Ptr() *Animal {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=47) "func (x Animal) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=51) "func (x *Animal) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=30) "\ttmp, err := ParseAnimal(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=93) "var _AnimalErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=54) "func (x *Animal) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=16) "\t\t*x = Animal(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=13) "\tcase string:", + (string) (len=26) "\t\t*x, err = ParseAnimal(v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {", + (string) (len=30) "\t\t\t\t*x, err = Animal(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase []byte:", + (string) (len=34) "\t\t*x, err = ParseAnimal(string(v))", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {", + (string) (len=30) "\t\t\t\t*x, err = Animal(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase Animal:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=14) "\tcase *Animal:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x, err = ParseAnimal(*v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {", + (string) (len=30) "\t\t\t\t*x, err = Animal(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=47) "func (x Animal) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=40) "func (x *Animal) Set(val string) error {", + (string) (len=27) "\tv, err := ParseAnimal(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=36) "func (x *Animal) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=32) "func (x *Animal) Type() string {", + (string) (len=16) "\treturn \"Animal\"", + (string) (len=1) "}", + (string) "", + (string) (len=24) "type NullAnimal struct {", + (string) (len=14) "\tAnimal Animal", + (string) (len=12) "\tValid bool", + (string) (len=12) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=52) "func NewNullAnimal(val interface{}) (x NullAnimal) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *NullAnimal) Scan(value interface{}) (err error) {", + (string) (len=13) "\tx.Set = true", + (string) (len=18) "\tif value == nil {", + (string) (len=38) "\t\tx.Animal, x.Valid = Animal(0), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=27) "\terr = x.Animal.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x NullAnimal) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=28) "\treturn int64(x.Animal), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// MarshalJSON correctly serializes a NullAnimal to JSON.", + (string) (len=51) "func (n NullAnimal) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=31) "\t\treturn json.Marshal(n.Animal)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=63) "// UnmarshalJSON correctly deserializes a NullAnimal from JSON.", + (string) (len=52) "func (n *NullAnimal) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=27) "type NullAnimalStr struct {", + (string) (len=11) "\tNullAnimal", + (string) (len=1) "}", + (string) "", + (string) (len=58) "func NewNullAnimalStr(val interface{}) (x NullAnimalStr) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=54) "func (x NullAnimalStr) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=30) "\treturn x.Animal.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// MarshalJSON correctly serializes a NullAnimal to JSON.", + (string) (len=54) "func (n NullAnimalStr) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=31) "\t\treturn json.Marshal(n.Animal)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=63) "// UnmarshalJSON correctly deserializes a NullAnimal from JSON.", + (string) (len=55) "func (n *NullAnimalStr) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=59) "\t// Custom_prefix_Test_lower is a Cases of type Test_lower.", + (string) (len=38) "\tCustom_prefix_Test_lower Cases = iota", + (string) (len=63) "\t// Custom_prefix_Test_capital is a Cases of type Test_capital.", + (string) (len=27) "\tCustom_prefix_Test_capital", + (string) (len=81) "\t// Custom_prefix_AnotherLowerCaseStart is a Cases of type AnotherLowerCaseStart.", + (string) (len=36) "\tCustom_prefix_AnotherLowerCaseStart", + (string) (len=1) ")", + (string) "", + (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", + (string) "", + (string) (len=33) "var _CasesMap = map[Cases]string{", + (string) (len=55) "\tCustom_prefix_Test_lower: _CasesName[0:10],", + (string) (len=56) "\tCustom_prefix_Test_capital: _CasesName[10:22],", + (string) (len=56) "\tCustom_prefix_AnotherLowerCaseStart: _CasesName[22:43],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Cases) String() string {", + (string) (len=33) "\tif str, ok := _CasesMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _CasesValue = map[string]Cases{", + (string) (len=62) "\t_CasesName[0:10]: Custom_prefix_Test_lower,", + (string) (len=62) "\tstrings.ToLower(_CasesName[0:10]): Custom_prefix_Test_lower,", + (string) (len=64) "\t_CasesName[10:22]: Custom_prefix_Test_capital,", + (string) (len=64) "\tstrings.ToLower(_CasesName[10:22]): Custom_prefix_Test_capital,", + (string) (len=73) "\t_CasesName[22:43]: Custom_prefix_AnotherLowerCaseStart,", + (string) (len=73) "\tstrings.ToLower(_CasesName[22:43]): Custom_prefix_AnotherLowerCaseStart,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseCases attempts to convert a string to a Cases.", + (string) (len=45) "func ParseCases(name string) (Cases, error) {", + (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=61) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=29) "func (x Cases) Ptr() *Cases {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Cases) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Cases) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseCases(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=92) "var _CasesErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=53) "func (x *Cases) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=15) "\t\t*x = Cases(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=13) "\tcase string:", + (string) (len=25) "\t\t*x, err = ParseCases(v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {", + (string) (len=29) "\t\t\t\t*x, err = Cases(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase []byte:", + (string) (len=33) "\t\t*x, err = ParseCases(string(v))", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {", + (string) (len=29) "\t\t\t\t*x, err = Cases(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=12) "\tcase Cases:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=13) "\tcase *Cases:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=26) "\t\t*x, err = ParseCases(*v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {", + (string) (len=29) "\t\t\t\t*x, err = Cases(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=46) "func (x Cases) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=39) "func (x *Cases) Set(val string) error {", + (string) (len=26) "\tv, err := ParseCases(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=35) "func (x *Cases) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=31) "func (x *Cases) Type() string {", + (string) (len=15) "\treturn \"Cases\"", + (string) (len=1) "}", + (string) "", + (string) (len=23) "type NullCases struct {", + (string) (len=12) "\tCases Cases", + (string) (len=11) "\tValid bool", + (string) (len=11) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=50) "func NewNullCases(val interface{}) (x NullCases) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=57) "func (x *NullCases) Scan(value interface{}) (err error) {", + (string) (len=13) "\tx.Set = true", + (string) (len=18) "\tif value == nil {", + (string) (len=36) "\t\tx.Cases, x.Valid = Cases(0), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=26) "\terr = x.Cases.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=50) "func (x NullCases) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=27) "\treturn int64(x.Cases), nil", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// MarshalJSON correctly serializes a NullCases to JSON.", + (string) (len=50) "func (n NullCases) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=30) "\t\treturn json.Marshal(n.Cases)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// UnmarshalJSON correctly deserializes a NullCases from JSON.", + (string) (len=51) "func (n *NullCases) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=26) "type NullCasesStr struct {", + (string) (len=10) "\tNullCases", + (string) (len=1) "}", + (string) "", + (string) (len=56) "func NewNullCasesStr(val interface{}) (x NullCasesStr) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=53) "func (x NullCasesStr) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=29) "\treturn x.Cases.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// MarshalJSON correctly serializes a NullCases to JSON.", + (string) (len=53) "func (n NullCasesStr) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=30) "\t\treturn json.Marshal(n.Cases)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// UnmarshalJSON correctly deserializes a NullCases from JSON.", + (string) (len=54) "func (n *NullCasesStr) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=49) "\t// Custom_prefix_Black is a Color of type Black.", + (string) (len=33) "\tCustom_prefix_Black Color = iota", + (string) (len=49) "\t// Custom_prefix_White is a Color of type White.", + (string) (len=20) "\tCustom_prefix_White", + (string) (len=45) "\t// Custom_prefix_Red is a Color of type Red.", + (string) (len=18) "\tCustom_prefix_Red", + (string) (len=49) "\t// Custom_prefix_Green is a Color of type Green.", + (string) (len=20) "\tCustom_prefix_Green", + (string) (len=47) "\t// Custom_prefix_Blue is a Color of type Blue.", + (string) (len=37) "\tCustom_prefix_Blue Color = iota + 29", + (string) (len=47) "\t// Custom_prefix_Grey is a Color of type Grey.", + (string) (len=19) "\tCustom_prefix_Grey", + (string) (len=51) "\t// Custom_prefix_Yellow is a Color of type Yellow.", + (string) (len=21) "\tCustom_prefix_Yellow", + (string) (len=1) ")", + (string) "", + (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", + (string) "", + (string) (len=33) "var _ColorMap = map[Color]string{", + (string) (len=39) "\tCustom_prefix_Black: _ColorName[0:5],", + (string) (len=40) "\tCustom_prefix_White: _ColorName[5:10],", + (string) (len=41) "\tCustom_prefix_Red: _ColorName[10:13],", + (string) (len=41) "\tCustom_prefix_Green: _ColorName[13:18],", + (string) (len=41) "\tCustom_prefix_Blue: _ColorName[18:22],", + (string) (len=41) "\tCustom_prefix_Grey: _ColorName[22:26],", + (string) (len=41) "\tCustom_prefix_Yellow: _ColorName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Color) String() string {", + (string) (len=33) "\tif str, ok := _ColorMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _ColorValue = map[string]Color{", + (string) (len=57) "\t_ColorName[0:5]: Custom_prefix_Black,", + (string) (len=57) "\tstrings.ToLower(_ColorName[0:5]): Custom_prefix_Black,", + (string) (len=57) "\t_ColorName[5:10]: Custom_prefix_White,", + (string) (len=57) "\tstrings.ToLower(_ColorName[5:10]): Custom_prefix_White,", + (string) (len=55) "\t_ColorName[10:13]: Custom_prefix_Red,", + (string) (len=55) "\tstrings.ToLower(_ColorName[10:13]): Custom_prefix_Red,", + (string) (len=57) "\t_ColorName[13:18]: Custom_prefix_Green,", + (string) (len=57) "\tstrings.ToLower(_ColorName[13:18]): Custom_prefix_Green,", + (string) (len=56) "\t_ColorName[18:22]: Custom_prefix_Blue,", + (string) (len=56) "\tstrings.ToLower(_ColorName[18:22]): Custom_prefix_Blue,", + (string) (len=56) "\t_ColorName[22:26]: Custom_prefix_Grey,", + (string) (len=56) "\tstrings.ToLower(_ColorName[22:26]): Custom_prefix_Grey,", + (string) (len=58) "\t_ColorName[26:32]: Custom_prefix_Yellow,", + (string) (len=58) "\tstrings.ToLower(_ColorName[26:32]): Custom_prefix_Yellow,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseColor attempts to convert a string to a Color.", + (string) (len=45) "func ParseColor(name string) (Color, error) {", + (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=61) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=29) "func (x Color) Ptr() *Color {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Color) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Color) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseColor(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=92) "var _ColorErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=53) "func (x *Color) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=15) "\t\t*x = Color(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=13) "\tcase string:", + (string) (len=25) "\t\t*x, err = ParseColor(v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {", + (string) (len=29) "\t\t\t\t*x, err = Color(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase []byte:", + (string) (len=33) "\t\t*x, err = ParseColor(string(v))", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {", + (string) (len=29) "\t\t\t\t*x, err = Color(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=12) "\tcase Color:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=13) "\tcase *Color:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=26) "\t\t*x, err = ParseColor(*v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {", + (string) (len=29) "\t\t\t\t*x, err = Color(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=46) "func (x Color) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=39) "func (x *Color) Set(val string) error {", + (string) (len=26) "\tv, err := ParseColor(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=35) "func (x *Color) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=31) "func (x *Color) Type() string {", + (string) (len=15) "\treturn \"Color\"", + (string) (len=1) "}", + (string) "", + (string) (len=23) "type NullColor struct {", + (string) (len=12) "\tColor Color", + (string) (len=11) "\tValid bool", + (string) (len=11) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=50) "func NewNullColor(val interface{}) (x NullColor) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=57) "func (x *NullColor) Scan(value interface{}) (err error) {", + (string) (len=13) "\tx.Set = true", + (string) (len=18) "\tif value == nil {", + (string) (len=36) "\t\tx.Color, x.Valid = Color(0), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=26) "\terr = x.Color.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=50) "func (x NullColor) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=27) "\treturn int64(x.Color), nil", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// MarshalJSON correctly serializes a NullColor to JSON.", + (string) (len=50) "func (n NullColor) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=30) "\t\treturn json.Marshal(n.Color)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// UnmarshalJSON correctly deserializes a NullColor from JSON.", + (string) (len=51) "func (n *NullColor) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=26) "type NullColorStr struct {", + (string) (len=10) "\tNullColor", + (string) (len=1) "}", + (string) "", + (string) (len=56) "func NewNullColorStr(val interface{}) (x NullColorStr) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=53) "func (x NullColorStr) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=29) "\treturn x.Color.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// MarshalJSON correctly serializes a NullColor to JSON.", + (string) (len=53) "func (n NullColorStr) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=30) "\t\treturn json.Marshal(n.Color)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// UnmarshalJSON correctly deserializes a NullColor from JSON.", + (string) (len=54) "func (n *NullColorStr) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=60) "\t// Custom_prefix_Black is a ColorWithComment of type Black.", + (string) (len=44) "\tCustom_prefix_Black ColorWithComment = iota", + (string) (len=60) "\t// Custom_prefix_White is a ColorWithComment of type White.", + (string) (len=20) "\tCustom_prefix_White", + (string) (len=56) "\t// Custom_prefix_Red is a ColorWithComment of type Red.", + (string) (len=18) "\tCustom_prefix_Red", + (string) (len=60) "\t// Custom_prefix_Green is a ColorWithComment of type Green.", + (string) (len=20) "\tCustom_prefix_Green", + (string) (len=58) "\t// Custom_prefix_Blue is a ColorWithComment of type Blue.", + (string) (len=23) "\t// Blue starts with 33", + (string) (len=48) "\tCustom_prefix_Blue ColorWithComment = iota + 29", + (string) (len=58) "\t// Custom_prefix_Grey is a ColorWithComment of type Grey.", + (string) (len=19) "\tCustom_prefix_Grey", + (string) (len=62) "\t// Custom_prefix_Yellow is a ColorWithComment of type Yellow.", + (string) (len=21) "\tCustom_prefix_Yellow", + (string) (len=1) ")", + (string) "", + (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", + (string) "", + (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", + (string) (len=50) "\tCustom_prefix_Black: _ColorWithCommentName[0:5],", + (string) (len=51) "\tCustom_prefix_White: _ColorWithCommentName[5:10],", + (string) (len=52) "\tCustom_prefix_Red: _ColorWithCommentName[10:13],", + (string) (len=52) "\tCustom_prefix_Green: _ColorWithCommentName[13:18],", + (string) (len=52) "\tCustom_prefix_Blue: _ColorWithCommentName[18:22],", + (string) (len=52) "\tCustom_prefix_Grey: _ColorWithCommentName[22:26],", + (string) (len=52) "\tCustom_prefix_Yellow: _ColorWithCommentName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=43) "func (x ColorWithComment) String() string {", + (string) (len=44) "\tif str, ok := _ColorWithCommentMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", + (string) (len=68) "\t_ColorWithCommentName[0:5]: Custom_prefix_Black,", + (string) (len=68) "\tstrings.ToLower(_ColorWithCommentName[0:5]): Custom_prefix_Black,", + (string) (len=68) "\t_ColorWithCommentName[5:10]: Custom_prefix_White,", + (string) (len=68) "\tstrings.ToLower(_ColorWithCommentName[5:10]): Custom_prefix_White,", + (string) (len=66) "\t_ColorWithCommentName[10:13]: Custom_prefix_Red,", + (string) (len=66) "\tstrings.ToLower(_ColorWithCommentName[10:13]): Custom_prefix_Red,", + (string) (len=68) "\t_ColorWithCommentName[13:18]: Custom_prefix_Green,", + (string) (len=68) "\tstrings.ToLower(_ColorWithCommentName[13:18]): Custom_prefix_Green,", + (string) (len=67) "\t_ColorWithCommentName[18:22]: Custom_prefix_Blue,", + (string) (len=67) "\tstrings.ToLower(_ColorWithCommentName[18:22]): Custom_prefix_Blue,", + (string) (len=67) "\t_ColorWithCommentName[22:26]: Custom_prefix_Grey,", + (string) (len=67) "\tstrings.ToLower(_ColorWithCommentName[22:26]): Custom_prefix_Grey,", + (string) (len=69) "\t_ColorWithCommentName[26:32]: Custom_prefix_Yellow,", + (string) (len=69) "\tstrings.ToLower(_ColorWithCommentName[26:32]): Custom_prefix_Yellow,", + (string) (len=1) "}", + (string) "", + (string) (len=76) "// ParseColorWithComment attempts to convert a string to a ColorWithComment.", + (string) (len=67) "func ParseColorWithComment(name string) (ColorWithComment, error) {", + (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=83) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=51) "func (x ColorWithComment) Ptr() *ColorWithComment {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=57) "func (x ColorWithComment) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=61) "func (x *ColorWithComment) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=40) "\ttmp, err := ParseColorWithComment(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=103) "var _ColorWithCommentErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=64) "func (x *ColorWithComment) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=26) "\t\t*x = ColorWithComment(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=13) "\tcase string:", + (string) (len=36) "\t\t*x, err = ParseColorWithComment(v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {", + (string) (len=40) "\t\t\t\t*x, err = ColorWithComment(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase []byte:", + (string) (len=44) "\t\t*x, err = ParseColorWithComment(string(v))", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {", + (string) (len=40) "\t\t\t\t*x, err = ColorWithComment(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=23) "\tcase ColorWithComment:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=24) "\tcase *ColorWithComment:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=37) "\t\t*x, err = ParseColorWithComment(*v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {", + (string) (len=40) "\t\t\t\t*x, err = ColorWithComment(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=57) "func (x ColorWithComment) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=50) "func (x *ColorWithComment) Set(val string) error {", + (string) (len=37) "\tv, err := ParseColorWithComment(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=46) "func (x *ColorWithComment) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=42) "func (x *ColorWithComment) Type() string {", + (string) (len=26) "\treturn \"ColorWithComment\"", + (string) (len=1) "}", + (string) "", + (string) (len=34) "type NullColorWithComment struct {", + (string) (len=34) "\tColorWithComment ColorWithComment", + (string) (len=22) "\tValid bool", + (string) (len=22) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=72) "func NewNullColorWithComment(val interface{}) (x NullColorWithComment) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=68) "func (x *NullColorWithComment) Scan(value interface{}) (err error) {", + (string) (len=13) "\tx.Set = true", + (string) (len=18) "\tif value == nil {", + (string) (len=58) "\t\tx.ColorWithComment, x.Valid = ColorWithComment(0), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\terr = x.ColorWithComment.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=61) "func (x NullColorWithComment) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=38) "\treturn int64(x.ColorWithComment), nil", + (string) (len=1) "}", + (string) "", + (string) (len=67) "// MarshalJSON correctly serializes a NullColorWithComment to JSON.", + (string) (len=61) "func (n NullColorWithComment) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=41) "\t\treturn json.Marshal(n.ColorWithComment)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=73) "// UnmarshalJSON correctly deserializes a NullColorWithComment from JSON.", + (string) (len=62) "func (n *NullColorWithComment) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=37) "type NullColorWithCommentStr struct {", + (string) (len=21) "\tNullColorWithComment", + (string) (len=1) "}", + (string) "", + (string) (len=78) "func NewNullColorWithCommentStr(val interface{}) (x NullColorWithCommentStr) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=64) "func (x NullColorWithCommentStr) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=40) "\treturn x.ColorWithComment.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=67) "// MarshalJSON correctly serializes a NullColorWithComment to JSON.", + (string) (len=64) "func (n NullColorWithCommentStr) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=41) "\t\treturn json.Marshal(n.ColorWithComment)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=73) "// UnmarshalJSON correctly deserializes a NullColorWithComment from JSON.", + (string) (len=65) "func (n *NullColorWithCommentStr) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=61) "\t// Custom_prefix_Black is a ColorWithComment2 of type Black.", + (string) (len=45) "\tCustom_prefix_Black ColorWithComment2 = iota", + (string) (len=61) "\t// Custom_prefix_White is a ColorWithComment2 of type White.", + (string) (len=20) "\tCustom_prefix_White", + (string) (len=57) "\t// Custom_prefix_Red is a ColorWithComment2 of type Red.", + (string) (len=18) "\tCustom_prefix_Red", + (string) (len=61) "\t// Custom_prefix_Green is a ColorWithComment2 of type Green.", + (string) (len=20) "\tCustom_prefix_Green", + (string) (len=59) "\t// Custom_prefix_Blue is a ColorWithComment2 of type Blue.", + (string) (len=23) "\t// Blue starts with 33", + (string) (len=49) "\tCustom_prefix_Blue ColorWithComment2 = iota + 29", + (string) (len=59) "\t// Custom_prefix_Grey is a ColorWithComment2 of type Grey.", + (string) (len=19) "\tCustom_prefix_Grey", + (string) (len=63) "\t// Custom_prefix_Yellow is a ColorWithComment2 of type Yellow.", + (string) (len=21) "\tCustom_prefix_Yellow", + (string) (len=1) ")", + (string) "", + (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", + (string) "", + (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", + (string) (len=51) "\tCustom_prefix_Black: _ColorWithComment2Name[0:5],", + (string) (len=52) "\tCustom_prefix_White: _ColorWithComment2Name[5:10],", + (string) (len=53) "\tCustom_prefix_Red: _ColorWithComment2Name[10:13],", + (string) (len=53) "\tCustom_prefix_Green: _ColorWithComment2Name[13:18],", + (string) (len=53) "\tCustom_prefix_Blue: _ColorWithComment2Name[18:22],", + (string) (len=53) "\tCustom_prefix_Grey: _ColorWithComment2Name[22:26],", + (string) (len=53) "\tCustom_prefix_Yellow: _ColorWithComment2Name[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment2) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment2Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", + (string) (len=69) "\t_ColorWithComment2Name[0:5]: Custom_prefix_Black,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): Custom_prefix_Black,", + (string) (len=69) "\t_ColorWithComment2Name[5:10]: Custom_prefix_White,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment2Name[5:10]): Custom_prefix_White,", + (string) (len=67) "\t_ColorWithComment2Name[10:13]: Custom_prefix_Red,", + (string) (len=67) "\tstrings.ToLower(_ColorWithComment2Name[10:13]): Custom_prefix_Red,", + (string) (len=69) "\t_ColorWithComment2Name[13:18]: Custom_prefix_Green,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment2Name[13:18]): Custom_prefix_Green,", + (string) (len=68) "\t_ColorWithComment2Name[18:22]: Custom_prefix_Blue,", + (string) (len=68) "\tstrings.ToLower(_ColorWithComment2Name[18:22]): Custom_prefix_Blue,", + (string) (len=68) "\t_ColorWithComment2Name[22:26]: Custom_prefix_Grey,", + (string) (len=68) "\tstrings.ToLower(_ColorWithComment2Name[22:26]): Custom_prefix_Grey,", + (string) (len=70) "\t_ColorWithComment2Name[26:32]: Custom_prefix_Yellow,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): Custom_prefix_Yellow,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2.", + (string) (len=69) "func ParseColorWithComment2(name string) (ColorWithComment2, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=85) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "func (x ColorWithComment2) Ptr() *ColorWithComment2 {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment2) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment2) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment2(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=104) "var _ColorWithComment2ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=65) "func (x *ColorWithComment2) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=27) "\t\t*x = ColorWithComment2(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=13) "\tcase string:", + (string) (len=37) "\t\t*x, err = ParseColorWithComment2(v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {", + (string) (len=41) "\t\t\t\t*x, err = ColorWithComment2(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase []byte:", + (string) (len=45) "\t\t*x, err = ParseColorWithComment2(string(v))", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {", + (string) (len=41) "\t\t\t\t*x, err = ColorWithComment2(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=24) "\tcase ColorWithComment2:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=25) "\tcase *ColorWithComment2:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=38) "\t\t*x, err = ParseColorWithComment2(*v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {", + (string) (len=41) "\t\t\t\t*x, err = ColorWithComment2(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x ColorWithComment2) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=51) "func (x *ColorWithComment2) Set(val string) error {", + (string) (len=38) "\tv, err := ParseColorWithComment2(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=47) "func (x *ColorWithComment2) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=43) "func (x *ColorWithComment2) Type() string {", + (string) (len=27) "\treturn \"ColorWithComment2\"", + (string) (len=1) "}", + (string) "", + (string) (len=35) "type NullColorWithComment2 struct {", + (string) (len=36) "\tColorWithComment2 ColorWithComment2", + (string) (len=23) "\tValid bool", + (string) (len=23) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=74) "func NewNullColorWithComment2(val interface{}) (x NullColorWithComment2) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=69) "func (x *NullColorWithComment2) Scan(value interface{}) (err error) {", + (string) (len=13) "\tx.Set = true", + (string) (len=18) "\tif value == nil {", + (string) (len=60) "\t\tx.ColorWithComment2, x.Valid = ColorWithComment2(0), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=38) "\terr = x.ColorWithComment2.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=62) "func (x NullColorWithComment2) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=39) "\treturn int64(x.ColorWithComment2), nil", + (string) (len=1) "}", + (string) "", + (string) (len=68) "// MarshalJSON correctly serializes a NullColorWithComment2 to JSON.", + (string) (len=62) "func (n NullColorWithComment2) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=42) "\t\treturn json.Marshal(n.ColorWithComment2)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// UnmarshalJSON correctly deserializes a NullColorWithComment2 from JSON.", + (string) (len=63) "func (n *NullColorWithComment2) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=38) "type NullColorWithComment2Str struct {", + (string) (len=22) "\tNullColorWithComment2", + (string) (len=1) "}", + (string) "", + (string) (len=80) "func NewNullColorWithComment2Str(val interface{}) (x NullColorWithComment2Str) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=65) "func (x NullColorWithComment2Str) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=41) "\treturn x.ColorWithComment2.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=68) "// MarshalJSON correctly serializes a NullColorWithComment2 to JSON.", + (string) (len=65) "func (n NullColorWithComment2Str) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=42) "\t\treturn json.Marshal(n.ColorWithComment2)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// UnmarshalJSON correctly deserializes a NullColorWithComment2 from JSON.", + (string) (len=66) "func (n *NullColorWithComment2Str) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=61) "\t// Custom_prefix_Black is a ColorWithComment3 of type Black.", + (string) (len=45) "\tCustom_prefix_Black ColorWithComment3 = iota", + (string) (len=61) "\t// Custom_prefix_White is a ColorWithComment3 of type White.", + (string) (len=20) "\tCustom_prefix_White", + (string) (len=57) "\t// Custom_prefix_Red is a ColorWithComment3 of type Red.", + (string) (len=18) "\tCustom_prefix_Red", + (string) (len=61) "\t// Custom_prefix_Green is a ColorWithComment3 of type Green.", + (string) (len=24) "\t// Green starts with 33", + (string) (len=50) "\tCustom_prefix_Green ColorWithComment3 = iota + 30", + (string) (len=59) "\t// Custom_prefix_Blue is a ColorWithComment3 of type Blue.", + (string) (len=19) "\tCustom_prefix_Blue", + (string) (len=59) "\t// Custom_prefix_Grey is a ColorWithComment3 of type Grey.", + (string) (len=19) "\tCustom_prefix_Grey", + (string) (len=63) "\t// Custom_prefix_Yellow is a ColorWithComment3 of type Yellow.", + (string) (len=21) "\tCustom_prefix_Yellow", + (string) (len=70) "\t// Custom_prefix_BlueGreen is a ColorWithComment3 of type Blue-Green.", + (string) (len=22) "\t// blue-green comment", + (string) (len=24) "\tCustom_prefix_BlueGreen", + (string) (len=70) "\t// Custom_prefix_RedOrange is a ColorWithComment3 of type Red-Orange.", + (string) (len=24) "\tCustom_prefix_RedOrange", + (string) (len=79) "\t// Custom_prefix_RedOrangeBlue is a ColorWithComment3 of type Red-Orange-Blue.", + (string) (len=28) "\tCustom_prefix_RedOrangeBlue", + (string) (len=1) ")", + (string) "", + (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", + (string) "", + (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", + (string) (len=58) "\tCustom_prefix_Black: _ColorWithComment3Name[0:5],", + (string) (len=59) "\tCustom_prefix_White: _ColorWithComment3Name[5:10],", + (string) (len=60) "\tCustom_prefix_Red: _ColorWithComment3Name[10:13],", + (string) (len=60) "\tCustom_prefix_Green: _ColorWithComment3Name[13:18],", + (string) (len=60) "\tCustom_prefix_Blue: _ColorWithComment3Name[18:22],", + (string) (len=60) "\tCustom_prefix_Grey: _ColorWithComment3Name[22:26],", + (string) (len=60) "\tCustom_prefix_Yellow: _ColorWithComment3Name[26:32],", + (string) (len=60) "\tCustom_prefix_BlueGreen: _ColorWithComment3Name[32:42],", + (string) (len=60) "\tCustom_prefix_RedOrange: _ColorWithComment3Name[42:52],", + (string) (len=60) "\tCustom_prefix_RedOrangeBlue: _ColorWithComment3Name[52:67],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment3) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment3Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", + (string) (len=69) "\t_ColorWithComment3Name[0:5]: Custom_prefix_Black,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): Custom_prefix_Black,", + (string) (len=69) "\t_ColorWithComment3Name[5:10]: Custom_prefix_White,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment3Name[5:10]): Custom_prefix_White,", + (string) (len=67) "\t_ColorWithComment3Name[10:13]: Custom_prefix_Red,", + (string) (len=67) "\tstrings.ToLower(_ColorWithComment3Name[10:13]): Custom_prefix_Red,", + (string) (len=69) "\t_ColorWithComment3Name[13:18]: Custom_prefix_Green,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment3Name[13:18]): Custom_prefix_Green,", + (string) (len=68) "\t_ColorWithComment3Name[18:22]: Custom_prefix_Blue,", + (string) (len=68) "\tstrings.ToLower(_ColorWithComment3Name[18:22]): Custom_prefix_Blue,", + (string) (len=68) "\t_ColorWithComment3Name[22:26]: Custom_prefix_Grey,", + (string) (len=68) "\tstrings.ToLower(_ColorWithComment3Name[22:26]): Custom_prefix_Grey,", + (string) (len=70) "\t_ColorWithComment3Name[26:32]: Custom_prefix_Yellow,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment3Name[26:32]): Custom_prefix_Yellow,", + (string) (len=73) "\t_ColorWithComment3Name[32:42]: Custom_prefix_BlueGreen,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment3Name[32:42]): Custom_prefix_BlueGreen,", + (string) (len=73) "\t_ColorWithComment3Name[42:52]: Custom_prefix_RedOrange,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment3Name[42:52]): Custom_prefix_RedOrange,", + (string) (len=77) "\t_ColorWithComment3Name[52:67]: Custom_prefix_RedOrangeBlue,", + (string) (len=77) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): Custom_prefix_RedOrangeBlue,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3.", + (string) (len=69) "func ParseColorWithComment3(name string) (ColorWithComment3, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=85) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "func (x ColorWithComment3) Ptr() *ColorWithComment3 {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment3) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment3) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment3(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=104) "var _ColorWithComment3ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=65) "func (x *ColorWithComment3) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=27) "\t\t*x = ColorWithComment3(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=13) "\tcase string:", + (string) (len=37) "\t\t*x, err = ParseColorWithComment3(v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {", + (string) (len=41) "\t\t\t\t*x, err = ColorWithComment3(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase []byte:", + (string) (len=45) "\t\t*x, err = ParseColorWithComment3(string(v))", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {", + (string) (len=41) "\t\t\t\t*x, err = ColorWithComment3(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=24) "\tcase ColorWithComment3:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=25) "\tcase *ColorWithComment3:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=38) "\t\t*x, err = ParseColorWithComment3(*v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {", + (string) (len=41) "\t\t\t\t*x, err = ColorWithComment3(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x ColorWithComment3) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=51) "func (x *ColorWithComment3) Set(val string) error {", + (string) (len=38) "\tv, err := ParseColorWithComment3(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=47) "func (x *ColorWithComment3) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=43) "func (x *ColorWithComment3) Type() string {", + (string) (len=27) "\treturn \"ColorWithComment3\"", + (string) (len=1) "}", + (string) "", + (string) (len=35) "type NullColorWithComment3 struct {", + (string) (len=36) "\tColorWithComment3 ColorWithComment3", + (string) (len=23) "\tValid bool", + (string) (len=23) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=74) "func NewNullColorWithComment3(val interface{}) (x NullColorWithComment3) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=69) "func (x *NullColorWithComment3) Scan(value interface{}) (err error) {", + (string) (len=13) "\tx.Set = true", + (string) (len=18) "\tif value == nil {", + (string) (len=60) "\t\tx.ColorWithComment3, x.Valid = ColorWithComment3(0), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=38) "\terr = x.ColorWithComment3.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=62) "func (x NullColorWithComment3) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=39) "\treturn int64(x.ColorWithComment3), nil", + (string) (len=1) "}", + (string) "", + (string) (len=68) "// MarshalJSON correctly serializes a NullColorWithComment3 to JSON.", + (string) (len=62) "func (n NullColorWithComment3) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=42) "\t\treturn json.Marshal(n.ColorWithComment3)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// UnmarshalJSON correctly deserializes a NullColorWithComment3 from JSON.", + (string) (len=63) "func (n *NullColorWithComment3) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=38) "type NullColorWithComment3Str struct {", + (string) (len=22) "\tNullColorWithComment3", + (string) (len=1) "}", + (string) "", + (string) (len=80) "func NewNullColorWithComment3Str(val interface{}) (x NullColorWithComment3Str) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=65) "func (x NullColorWithComment3Str) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=41) "\treturn x.ColorWithComment3.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=68) "// MarshalJSON correctly serializes a NullColorWithComment3 to JSON.", + (string) (len=65) "func (n NullColorWithComment3Str) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=42) "\t\treturn json.Marshal(n.ColorWithComment3)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// UnmarshalJSON correctly deserializes a NullColorWithComment3 from JSON.", + (string) (len=66) "func (n *NullColorWithComment3Str) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=18) "\t// Skipped value.", + (string) (len=15) "\t// Placeholder", + (string) (len=27) "\t_ ColorWithComment4 = iota", + (string) (len=61) "\t// Custom_prefix_Black is a ColorWithComment4 of type Black.", + (string) (len=20) "\tCustom_prefix_Black", + (string) (len=61) "\t// Custom_prefix_White is a ColorWithComment4 of type White.", + (string) (len=20) "\tCustom_prefix_White", + (string) (len=57) "\t// Custom_prefix_Red is a ColorWithComment4 of type Red.", + (string) (len=18) "\tCustom_prefix_Red", + (string) (len=61) "\t// Custom_prefix_Green is a ColorWithComment4 of type Green.", + (string) (len=24) "\t// Green starts with 33", + (string) (len=50) "\tCustom_prefix_Green ColorWithComment4 = iota + 29", + (string) (len=59) "\t// Custom_prefix_Blue is a ColorWithComment4 of type Blue.", + (string) (len=19) "\tCustom_prefix_Blue", + (string) (len=59) "\t// Custom_prefix_Grey is a ColorWithComment4 of type Grey.", + (string) (len=19) "\tCustom_prefix_Grey", + (string) (len=63) "\t// Custom_prefix_Yellow is a ColorWithComment4 of type Yellow.", + (string) (len=110) "\t// Where did all the (somewhat) bad fish go? (something else that goes in parentheses at the end of the line)", + (string) (len=21) "\tCustom_prefix_Yellow", + (string) (len=70) "\t// Custom_prefix_BlueGreen is a ColorWithComment4 of type Blue-Green.", + (string) (len=22) "\t// blue-green comment", + (string) (len=24) "\tCustom_prefix_BlueGreen", + (string) (len=70) "\t// Custom_prefix_RedOrange is a ColorWithComment4 of type Red-Orange.", + (string) (len=20) "\t// has a , in it!?!", + (string) (len=24) "\tCustom_prefix_RedOrange", + (string) (len=1) ")", + (string) "", + (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", + (string) "", + (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", + (string) (len=54) "\tCustom_prefix_Black: _ColorWithComment4Name[0:5],", + (string) (len=55) "\tCustom_prefix_White: _ColorWithComment4Name[5:10],", + (string) (len=56) "\tCustom_prefix_Red: _ColorWithComment4Name[10:13],", + (string) (len=56) "\tCustom_prefix_Green: _ColorWithComment4Name[13:18],", + (string) (len=56) "\tCustom_prefix_Blue: _ColorWithComment4Name[18:22],", + (string) (len=56) "\tCustom_prefix_Grey: _ColorWithComment4Name[22:26],", + (string) (len=56) "\tCustom_prefix_Yellow: _ColorWithComment4Name[26:32],", + (string) (len=56) "\tCustom_prefix_BlueGreen: _ColorWithComment4Name[32:42],", + (string) (len=56) "\tCustom_prefix_RedOrange: _ColorWithComment4Name[42:52],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment4) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment4Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", + (string) (len=69) "\t_ColorWithComment4Name[0:5]: Custom_prefix_Black,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): Custom_prefix_Black,", + (string) (len=69) "\t_ColorWithComment4Name[5:10]: Custom_prefix_White,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment4Name[5:10]): Custom_prefix_White,", + (string) (len=67) "\t_ColorWithComment4Name[10:13]: Custom_prefix_Red,", + (string) (len=67) "\tstrings.ToLower(_ColorWithComment4Name[10:13]): Custom_prefix_Red,", + (string) (len=69) "\t_ColorWithComment4Name[13:18]: Custom_prefix_Green,", + (string) (len=69) "\tstrings.ToLower(_ColorWithComment4Name[13:18]): Custom_prefix_Green,", + (string) (len=68) "\t_ColorWithComment4Name[18:22]: Custom_prefix_Blue,", + (string) (len=68) "\tstrings.ToLower(_ColorWithComment4Name[18:22]): Custom_prefix_Blue,", + (string) (len=68) "\t_ColorWithComment4Name[22:26]: Custom_prefix_Grey,", + (string) (len=68) "\tstrings.ToLower(_ColorWithComment4Name[22:26]): Custom_prefix_Grey,", + (string) (len=70) "\t_ColorWithComment4Name[26:32]: Custom_prefix_Yellow,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment4Name[26:32]): Custom_prefix_Yellow,", + (string) (len=73) "\t_ColorWithComment4Name[32:42]: Custom_prefix_BlueGreen,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment4Name[32:42]): Custom_prefix_BlueGreen,", + (string) (len=73) "\t_ColorWithComment4Name[42:52]: Custom_prefix_RedOrange,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): Custom_prefix_RedOrange,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4.", + (string) (len=69) "func ParseColorWithComment4(name string) (ColorWithComment4, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=85) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "func (x ColorWithComment4) Ptr() *ColorWithComment4 {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment4) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment4) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment4(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=104) "var _ColorWithComment4ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=65) "func (x *ColorWithComment4) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=27) "\t\t*x = ColorWithComment4(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=13) "\tcase string:", + (string) (len=37) "\t\t*x, err = ParseColorWithComment4(v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {", + (string) (len=41) "\t\t\t\t*x, err = ColorWithComment4(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase []byte:", + (string) (len=45) "\t\t*x, err = ParseColorWithComment4(string(v))", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {", + (string) (len=41) "\t\t\t\t*x, err = ColorWithComment4(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=24) "\tcase ColorWithComment4:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=25) "\tcase *ColorWithComment4:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=38) "\t\t*x, err = ParseColorWithComment4(*v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {", + (string) (len=41) "\t\t\t\t*x, err = ColorWithComment4(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x ColorWithComment4) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=51) "func (x *ColorWithComment4) Set(val string) error {", + (string) (len=38) "\tv, err := ParseColorWithComment4(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=47) "func (x *ColorWithComment4) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=43) "func (x *ColorWithComment4) Type() string {", + (string) (len=27) "\treturn \"ColorWithComment4\"", + (string) (len=1) "}", + (string) "", + (string) (len=35) "type NullColorWithComment4 struct {", + (string) (len=36) "\tColorWithComment4 ColorWithComment4", + (string) (len=23) "\tValid bool", + (string) (len=23) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=74) "func NewNullColorWithComment4(val interface{}) (x NullColorWithComment4) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=69) "func (x *NullColorWithComment4) Scan(value interface{}) (err error) {", + (string) (len=13) "\tx.Set = true", + (string) (len=18) "\tif value == nil {", + (string) (len=60) "\t\tx.ColorWithComment4, x.Valid = ColorWithComment4(0), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=38) "\terr = x.ColorWithComment4.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=62) "func (x NullColorWithComment4) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=39) "\treturn int64(x.ColorWithComment4), nil", + (string) (len=1) "}", + (string) "", + (string) (len=68) "// MarshalJSON correctly serializes a NullColorWithComment4 to JSON.", + (string) (len=62) "func (n NullColorWithComment4) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=42) "\t\treturn json.Marshal(n.ColorWithComment4)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// UnmarshalJSON correctly deserializes a NullColorWithComment4 from JSON.", + (string) (len=63) "func (n *NullColorWithComment4) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=38) "type NullColorWithComment4Str struct {", + (string) (len=22) "\tNullColorWithComment4", + (string) (len=1) "}", + (string) "", + (string) (len=80) "func NewNullColorWithComment4Str(val interface{}) (x NullColorWithComment4Str) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=65) "func (x NullColorWithComment4Str) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=41) "\treturn x.ColorWithComment4.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=68) "// MarshalJSON correctly serializes a NullColorWithComment4 to JSON.", + (string) (len=65) "func (n NullColorWithComment4Str) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=42) "\t\treturn json.Marshal(n.ColorWithComment4)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// UnmarshalJSON correctly deserializes a NullColorWithComment4 from JSON.", + (string) (len=66) "func (n *NullColorWithComment4Str) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=57) "\t// Custom_prefix_Unknown is a Enum64bit of type Unknown.", + (string) (len=39) "\tCustom_prefix_Unknown Enum64bit = iota", + (string) (len=53) "\t// Custom_prefix_E2P15 is a Enum64bit of type E2P15.", + (string) (len=45) "\tCustom_prefix_E2P15 Enum64bit = iota + 32767", + (string) (len=53) "\t// Custom_prefix_E2P16 is a Enum64bit of type E2P16.", + (string) (len=45) "\tCustom_prefix_E2P16 Enum64bit = iota + 65534", + (string) (len=53) "\t// Custom_prefix_E2P17 is a Enum64bit of type E2P17.", + (string) (len=46) "\tCustom_prefix_E2P17 Enum64bit = iota + 131069", + (string) (len=53) "\t// Custom_prefix_E2P18 is a Enum64bit of type E2P18.", + (string) (len=46) "\tCustom_prefix_E2P18 Enum64bit = iota + 262140", + (string) (len=53) "\t// Custom_prefix_E2P19 is a Enum64bit of type E2P19.", + (string) (len=46) "\tCustom_prefix_E2P19 Enum64bit = iota + 524283", + (string) (len=53) "\t// Custom_prefix_E2P20 is a Enum64bit of type E2P20.", + (string) (len=47) "\tCustom_prefix_E2P20 Enum64bit = iota + 1048570", + (string) (len=53) "\t// Custom_prefix_E2P21 is a Enum64bit of type E2P21.", + (string) (len=47) "\tCustom_prefix_E2P21 Enum64bit = iota + 2097145", + (string) (len=53) "\t// Custom_prefix_E2P22 is a Enum64bit of type E2P22.", + (string) (len=48) "\tCustom_prefix_E2P22 Enum64bit = iota + 33554424", + (string) (len=53) "\t// Custom_prefix_E2P23 is a Enum64bit of type E2P23.", + (string) (len=48) "\tCustom_prefix_E2P23 Enum64bit = iota + 67108855", + (string) (len=53) "\t// Custom_prefix_E2P28 is a Enum64bit of type E2P28.", + (string) (len=49) "\tCustom_prefix_E2P28 Enum64bit = iota + 536870902", + (string) (len=53) "\t// Custom_prefix_E2P30 is a Enum64bit of type E2P30.", + (string) (len=50) "\tCustom_prefix_E2P30 Enum64bit = iota + 1073741813", + (string) (len=53) "\t// Custom_prefix_E2P31 is a Enum64bit of type E2P31.", + (string) (len=50) "\tCustom_prefix_E2P31 Enum64bit = iota + 2147483636", + (string) (len=53) "\t// Custom_prefix_E2P32 is a Enum64bit of type E2P32.", + (string) (len=50) "\tCustom_prefix_E2P32 Enum64bit = iota + 4294967283", + (string) (len=53) "\t// Custom_prefix_E2P33 is a Enum64bit of type E2P33.", + (string) (len=50) "\tCustom_prefix_E2P33 Enum64bit = iota + 8454967282", + (string) (len=1) ")", + (string) "", + (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", + (string) "", + (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", + (string) (len=44) "\tCustom_prefix_Unknown: _Enum64bitName[0:7],", + (string) (len=45) "\tCustom_prefix_E2P15: _Enum64bitName[7:12],", + (string) (len=46) "\tCustom_prefix_E2P16: _Enum64bitName[12:17],", + (string) (len=46) "\tCustom_prefix_E2P17: _Enum64bitName[17:22],", + (string) (len=46) "\tCustom_prefix_E2P18: _Enum64bitName[22:27],", + (string) (len=46) "\tCustom_prefix_E2P19: _Enum64bitName[27:32],", + (string) (len=46) "\tCustom_prefix_E2P20: _Enum64bitName[32:37],", + (string) (len=46) "\tCustom_prefix_E2P21: _Enum64bitName[37:42],", + (string) (len=46) "\tCustom_prefix_E2P22: _Enum64bitName[42:47],", + (string) (len=46) "\tCustom_prefix_E2P23: _Enum64bitName[47:52],", + (string) (len=46) "\tCustom_prefix_E2P28: _Enum64bitName[52:57],", + (string) (len=46) "\tCustom_prefix_E2P30: _Enum64bitName[57:62],", + (string) (len=46) "\tCustom_prefix_E2P31: _Enum64bitName[62:67],", + (string) (len=46) "\tCustom_prefix_E2P32: _Enum64bitName[67:72],", + (string) (len=46) "\tCustom_prefix_E2P33: _Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x Enum64bit) String() string {", + (string) (len=37) "\tif str, ok := _Enum64bitMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", + (string) (len=63) "\t_Enum64bitName[0:7]: Custom_prefix_Unknown,", + (string) (len=63) "\tstrings.ToLower(_Enum64bitName[0:7]): Custom_prefix_Unknown,", + (string) (len=61) "\t_Enum64bitName[7:12]: Custom_prefix_E2P15,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[7:12]): Custom_prefix_E2P15,", + (string) (len=61) "\t_Enum64bitName[12:17]: Custom_prefix_E2P16,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[12:17]): Custom_prefix_E2P16,", + (string) (len=61) "\t_Enum64bitName[17:22]: Custom_prefix_E2P17,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[17:22]): Custom_prefix_E2P17,", + (string) (len=61) "\t_Enum64bitName[22:27]: Custom_prefix_E2P18,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[22:27]): Custom_prefix_E2P18,", + (string) (len=61) "\t_Enum64bitName[27:32]: Custom_prefix_E2P19,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[27:32]): Custom_prefix_E2P19,", + (string) (len=61) "\t_Enum64bitName[32:37]: Custom_prefix_E2P20,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[32:37]): Custom_prefix_E2P20,", + (string) (len=61) "\t_Enum64bitName[37:42]: Custom_prefix_E2P21,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[37:42]): Custom_prefix_E2P21,", + (string) (len=61) "\t_Enum64bitName[42:47]: Custom_prefix_E2P22,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[42:47]): Custom_prefix_E2P22,", + (string) (len=61) "\t_Enum64bitName[47:52]: Custom_prefix_E2P23,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[47:52]): Custom_prefix_E2P23,", + (string) (len=61) "\t_Enum64bitName[52:57]: Custom_prefix_E2P28,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[52:57]): Custom_prefix_E2P28,", + (string) (len=61) "\t_Enum64bitName[57:62]: Custom_prefix_E2P30,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[57:62]): Custom_prefix_E2P30,", + (string) (len=61) "\t_Enum64bitName[62:67]: Custom_prefix_E2P31,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[62:67]): Custom_prefix_E2P31,", + (string) (len=61) "\t_Enum64bitName[67:72]: Custom_prefix_E2P32,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[67:72]): Custom_prefix_E2P32,", + (string) (len=61) "\t_Enum64bitName[72:77]: Custom_prefix_E2P33,", + (string) (len=61) "\tstrings.ToLower(_Enum64bitName[72:77]): Custom_prefix_E2P33,", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// ParseEnum64bit attempts to convert a string to a Enum64bit.", + (string) (len=53) "func ParseEnum64bit(name string) (Enum64bit, error) {", + (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=69) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=37) "func (x Enum64bit) Ptr() *Enum64bit {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=50) "func (x Enum64bit) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=54) "func (x *Enum64bit) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=33) "\ttmp, err := ParseEnum64bit(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=96) "var _Enum64bitErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=57) "func (x *Enum64bit) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=19) "\t\t*x = Enum64bit(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=13) "\tcase string:", + (string) (len=29) "\t\t*x, err = ParseEnum64bit(v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {", + (string) (len=33) "\t\t\t\t*x, err = Enum64bit(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase []byte:", + (string) (len=37) "\t\t*x, err = ParseEnum64bit(string(v))", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {", + (string) (len=33) "\t\t\t\t*x, err = Enum64bit(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=16) "\tcase Enum64bit:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=17) "\tcase *Enum64bit:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=30) "\t\t*x, err = ParseEnum64bit(*v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {", + (string) (len=33) "\t\t\t\t*x, err = Enum64bit(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=50) "func (x Enum64bit) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=43) "func (x *Enum64bit) Set(val string) error {", + (string) (len=30) "\tv, err := ParseEnum64bit(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=39) "func (x *Enum64bit) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=35) "func (x *Enum64bit) Type() string {", + (string) (len=19) "\treturn \"Enum64bit\"", + (string) (len=1) "}", + (string) "", + (string) (len=27) "type NullEnum64bit struct {", + (string) (len=20) "\tEnum64bit Enum64bit", + (string) (len=15) "\tValid bool", + (string) (len=15) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=58) "func NewNullEnum64bit(val interface{}) (x NullEnum64bit) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=61) "func (x *NullEnum64bit) Scan(value interface{}) (err error) {", + (string) (len=13) "\tx.Set = true", + (string) (len=18) "\tif value == nil {", + (string) (len=44) "\t\tx.Enum64bit, x.Valid = Enum64bit(0), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=30) "\terr = x.Enum64bit.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=54) "func (x NullEnum64bit) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=31) "\treturn int64(x.Enum64bit), nil", + (string) (len=1) "}", + (string) "", + (string) (len=60) "// MarshalJSON correctly serializes a NullEnum64bit to JSON.", + (string) (len=54) "func (n NullEnum64bit) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=34) "\t\treturn json.Marshal(n.Enum64bit)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// UnmarshalJSON correctly deserializes a NullEnum64bit from JSON.", + (string) (len=55) "func (n *NullEnum64bit) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=30) "type NullEnum64bitStr struct {", + (string) (len=14) "\tNullEnum64bit", + (string) (len=1) "}", + (string) "", + (string) (len=64) "func NewNullEnum64bitStr(val interface{}) (x NullEnum64bitStr) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=57) "func (x NullEnum64bitStr) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=33) "\treturn x.Enum64bit.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=60) "// MarshalJSON correctly serializes a NullEnum64bit to JSON.", + (string) (len=57) "func (n NullEnum64bitStr) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=34) "\t\treturn json.Marshal(n.Enum64bit)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// UnmarshalJSON correctly deserializes a NullEnum64bit from JSON.", + (string) (len=58) "func (n *NullEnum64bitStr) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=51) "\t// Custom_prefix_Toyota is a Model of type Toyota.", + (string) (len=34) "\tCustom_prefix_Toyota Model = iota", + (string) (len=18) "\t// Skipped value.", + (string) (len=2) "\t_", + (string) (len=49) "\t// Custom_prefix_Chevy is a Model of type Chevy.", + (string) (len=20) "\tCustom_prefix_Chevy", + (string) (len=18) "\t// Skipped value.", + (string) (len=2) "\t_", + (string) (len=47) "\t// Custom_prefix_Ford is a Model of type Ford.", + (string) (len=19) "\tCustom_prefix_Ford", + (string) (len=1) ")", + (string) "", + (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", + (string) "", + (string) (len=33) "var _ModelMap = map[Model]string{", + (string) (len=39) "\tCustom_prefix_Toyota: _ModelName[0:6],", + (string) (len=40) "\tCustom_prefix_Chevy: _ModelName[6:11],", + (string) (len=41) "\tCustom_prefix_Ford: _ModelName[11:15],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Model) String() string {", + (string) (len=33) "\tif str, ok := _ModelMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _ModelValue = map[string]Model{", + (string) (len=58) "\t_ModelName[0:6]: Custom_prefix_Toyota,", + (string) (len=58) "\tstrings.ToLower(_ModelName[0:6]): Custom_prefix_Toyota,", + (string) (len=57) "\t_ModelName[6:11]: Custom_prefix_Chevy,", + (string) (len=57) "\tstrings.ToLower(_ModelName[6:11]): Custom_prefix_Chevy,", + (string) (len=56) "\t_ModelName[11:15]: Custom_prefix_Ford,", + (string) (len=56) "\tstrings.ToLower(_ModelName[11:15]): Custom_prefix_Ford,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseModel attempts to convert a string to a Model.", + (string) (len=45) "func ParseModel(name string) (Model, error) {", + (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=61) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=29) "func (x Model) Ptr() *Model {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Model) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Model) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseModel(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=92) "var _ModelErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=53) "func (x *Model) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=15) "\t\t*x = Model(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=13) "\tcase string:", + (string) (len=25) "\t\t*x, err = ParseModel(v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {", + (string) (len=29) "\t\t\t\t*x, err = Model(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase []byte:", + (string) (len=33) "\t\t*x, err = ParseModel(string(v))", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {", + (string) (len=29) "\t\t\t\t*x, err = Model(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=12) "\tcase Model:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=13) "\tcase *Model:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=26) "\t\t*x, err = ParseModel(*v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {", + (string) (len=29) "\t\t\t\t*x, err = Model(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=46) "func (x Model) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=39) "func (x *Model) Set(val string) error {", + (string) (len=26) "\tv, err := ParseModel(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=35) "func (x *Model) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=31) "func (x *Model) Type() string {", + (string) (len=15) "\treturn \"Model\"", + (string) (len=1) "}", + (string) "", + (string) (len=23) "type NullModel struct {", + (string) (len=12) "\tModel Model", + (string) (len=11) "\tValid bool", + (string) (len=11) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=50) "func NewNullModel(val interface{}) (x NullModel) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=57) "func (x *NullModel) Scan(value interface{}) (err error) {", + (string) (len=13) "\tx.Set = true", + (string) (len=18) "\tif value == nil {", + (string) (len=36) "\t\tx.Model, x.Valid = Model(0), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=26) "\terr = x.Model.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=50) "func (x NullModel) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=27) "\treturn int64(x.Model), nil", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// MarshalJSON correctly serializes a NullModel to JSON.", + (string) (len=50) "func (n NullModel) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=30) "\t\treturn json.Marshal(n.Model)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// UnmarshalJSON correctly deserializes a NullModel from JSON.", + (string) (len=51) "func (n *NullModel) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=26) "type NullModelStr struct {", + (string) (len=10) "\tNullModel", + (string) (len=1) "}", + (string) "", + (string) (len=56) "func NewNullModelStr(val interface{}) (x NullModelStr) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=53) "func (x NullModelStr) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=29) "\treturn x.Model.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// MarshalJSON correctly serializes a NullModel to JSON.", + (string) (len=53) "func (n NullModelStr) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=30) "\t\treturn json.Marshal(n.Model)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// UnmarshalJSON correctly deserializes a NullModel from JSON.", + (string) (len=54) "func (n *NullModelStr) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=65) "\t// Custom_prefix_TestHyphen is a Sanitizing of type Test-Hyphen.", + (string) (len=43) "\tCustom_prefix_TestHyphen Sanitizing = iota", + (string) (len=67) "\t// Custom_prefix_HyphenStart is a Sanitizing of type -HyphenStart.", + (string) (len=26) "\tCustom_prefix_HyphenStart", + (string) (len=76) "\t// Custom_prefix__underscoreFirst is a Sanitizing of type _underscoreFirst.", + (string) (len=31) "\tCustom_prefix__underscoreFirst", + (string) (len=68) "\t// Custom_prefix_0numberFirst is a Sanitizing of type 0numberFirst.", + (string) (len=27) "\tCustom_prefix_0numberFirst", + (string) (len=64) "\t// Custom_prefix_123456789a is a Sanitizing of type 123456789a.", + (string) (len=25) "\tCustom_prefix_123456789a", + (string) (len=65) "\t// Custom_prefix_123123Asdf is a Sanitizing of type 123123-Asdf.", + (string) (len=25) "\tCustom_prefix_123123Asdf", + (string) (len=70) "\t// Custom_prefix_EndingHyphen is a Sanitizing of type Ending-Hyphen-.", + (string) (len=27) "\tCustom_prefix_EndingHyphen", + (string) (len=1) ")", + (string) "", + (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", + (string) "", + (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", + (string) (len=55) "\tCustom_prefix_TestHyphen: _SanitizingName[0:11],", + (string) (len=56) "\tCustom_prefix_HyphenStart: _SanitizingName[11:23],", + (string) (len=56) "\tCustom_prefix__underscoreFirst: _SanitizingName[23:39],", + (string) (len=56) "\tCustom_prefix_0numberFirst: _SanitizingName[39:51],", + (string) (len=56) "\tCustom_prefix_123456789a: _SanitizingName[51:61],", + (string) (len=56) "\tCustom_prefix_123123Asdf: _SanitizingName[61:72],", + (string) (len=56) "\tCustom_prefix_EndingHyphen: _SanitizingName[72:86],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x Sanitizing) String() string {", + (string) (len=38) "\tif str, ok := _SanitizingMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", + (string) (len=67) "\t_SanitizingName[0:11]: Custom_prefix_TestHyphen,", + (string) (len=67) "\tstrings.ToLower(_SanitizingName[0:11]): Custom_prefix_TestHyphen,", + (string) (len=68) "\t_SanitizingName[11:23]: Custom_prefix_HyphenStart,", + (string) (len=68) "\tstrings.ToLower(_SanitizingName[11:23]): Custom_prefix_HyphenStart,", + (string) (len=73) "\t_SanitizingName[23:39]: Custom_prefix__underscoreFirst,", + (string) (len=73) "\tstrings.ToLower(_SanitizingName[23:39]): Custom_prefix__underscoreFirst,", + (string) (len=69) "\t_SanitizingName[39:51]: Custom_prefix_0numberFirst,", + (string) (len=69) "\tstrings.ToLower(_SanitizingName[39:51]): Custom_prefix_0numberFirst,", + (string) (len=67) "\t_SanitizingName[51:61]: Custom_prefix_123456789a,", + (string) (len=67) "\tstrings.ToLower(_SanitizingName[51:61]): Custom_prefix_123456789a,", + (string) (len=67) "\t_SanitizingName[61:72]: Custom_prefix_123123Asdf,", + (string) (len=67) "\tstrings.ToLower(_SanitizingName[61:72]): Custom_prefix_123123Asdf,", + (string) (len=69) "\t_SanitizingName[72:86]: Custom_prefix_EndingHyphen,", + (string) (len=69) "\tstrings.ToLower(_SanitizingName[72:86]): Custom_prefix_EndingHyphen,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseSanitizing attempts to convert a string to a Sanitizing.", + (string) (len=55) "func ParseSanitizing(name string) (Sanitizing, error) {", + (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=71) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=39) "func (x Sanitizing) Ptr() *Sanitizing {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x Sanitizing) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *Sanitizing) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=34) "\ttmp, err := ParseSanitizing(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=97) "var _SanitizingErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *Sanitizing) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=20) "\t\t*x = Sanitizing(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseSanitizing(v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {", + (string) (len=34) "\t\t\t\t*x, err = Sanitizing(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase []byte:", + (string) (len=38) "\t\t*x, err = ParseSanitizing(string(v))", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {", + (string) (len=34) "\t\t\t\t*x, err = Sanitizing(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=17) "\tcase Sanitizing:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=18) "\tcase *Sanitizing:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseSanitizing(*v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {", + (string) (len=34) "\t\t\t\t*x, err = Sanitizing(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x Sanitizing) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=44) "func (x *Sanitizing) Set(val string) error {", + (string) (len=31) "\tv, err := ParseSanitizing(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=40) "func (x *Sanitizing) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=36) "func (x *Sanitizing) Type() string {", + (string) (len=20) "\treturn \"Sanitizing\"", + (string) (len=1) "}", + (string) "", + (string) (len=28) "type NullSanitizing struct {", + (string) (len=22) "\tSanitizing Sanitizing", + (string) (len=16) "\tValid bool", + (string) (len=16) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=60) "func NewNullSanitizing(val interface{}) (x NullSanitizing) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=62) "func (x *NullSanitizing) Scan(value interface{}) (err error) {", + (string) (len=13) "\tx.Set = true", + (string) (len=18) "\tif value == nil {", + (string) (len=46) "\t\tx.Sanitizing, x.Valid = Sanitizing(0), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=31) "\terr = x.Sanitizing.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=55) "func (x NullSanitizing) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=32) "\treturn int64(x.Sanitizing), nil", + (string) (len=1) "}", + (string) "", + (string) (len=61) "// MarshalJSON correctly serializes a NullSanitizing to JSON.", + (string) (len=55) "func (n NullSanitizing) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=35) "\t\treturn json.Marshal(n.Sanitizing)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=67) "// UnmarshalJSON correctly deserializes a NullSanitizing from JSON.", + (string) (len=56) "func (n *NullSanitizing) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=31) "type NullSanitizingStr struct {", + (string) (len=15) "\tNullSanitizing", + (string) (len=1) "}", + (string) "", + (string) (len=66) "func NewNullSanitizingStr(val interface{}) (x NullSanitizingStr) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x NullSanitizingStr) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=34) "\treturn x.Sanitizing.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=61) "// MarshalJSON correctly serializes a NullSanitizing to JSON.", + (string) (len=58) "func (n NullSanitizingStr) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=35) "\t\treturn json.Marshal(n.Sanitizing)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=67) "// UnmarshalJSON correctly deserializes a NullSanitizing from JSON.", + (string) (len=59) "func (n *NullSanitizingStr) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=46) "\t// Custom_prefix_Coke is a Soda of type Coke.", + (string) (len=31) "\tCustom_prefix_Coke Soda = iota", + (string) (len=48) "\t// Custom_prefix_Pepsi is a Soda of type Pepsi.", + (string) (len=20) "\tCustom_prefix_Pepsi", + (string) (len=50) "\t// Custom_prefix_MtnDew is a Soda of type MtnDew.", + (string) (len=21) "\tCustom_prefix_MtnDew", + (string) (len=1) ")", + (string) "", + (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", + (string) "", + (string) (len=31) "var _SodaMap = map[Soda]string{", + (string) (len=38) "\tCustom_prefix_Coke: _SodaName[0:4],", + (string) (len=38) "\tCustom_prefix_Pepsi: _SodaName[4:9],", + (string) (len=39) "\tCustom_prefix_MtnDew: _SodaName[9:15],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=31) "func (x Soda) String() string {", + (string) (len=32) "\tif str, ok := _SodaMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _SodaValue = map[string]Soda{", + (string) (len=54) "\t_SodaName[0:4]: Custom_prefix_Coke,", + (string) (len=54) "\tstrings.ToLower(_SodaName[0:4]): Custom_prefix_Coke,", + (string) (len=55) "\t_SodaName[4:9]: Custom_prefix_Pepsi,", + (string) (len=55) "\tstrings.ToLower(_SodaName[4:9]): Custom_prefix_Pepsi,", + (string) (len=56) "\t_SodaName[9:15]: Custom_prefix_MtnDew,", + (string) (len=56) "\tstrings.ToLower(_SodaName[9:15]): Custom_prefix_MtnDew,", + (string) (len=1) "}", + (string) "", + (string) (len=52) "// ParseSoda attempts to convert a string to a Soda.", + (string) (len=43) "func ParseSoda(name string) (Soda, error) {", + (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=59) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=27) "func (x Soda) Ptr() *Soda {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=45) "func (x Soda) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=49) "func (x *Soda) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=28) "\ttmp, err := ParseSoda(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=91) "var _SodaErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=52) "func (x *Soda) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=14) "\t\t*x = Soda(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=13) "\tcase string:", + (string) (len=24) "\t\t*x, err = ParseSoda(v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {", + (string) (len=28) "\t\t\t\t*x, err = Soda(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase []byte:", + (string) (len=32) "\t\t*x, err = ParseSoda(string(v))", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {", + (string) (len=28) "\t\t\t\t*x, err = Soda(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=11) "\tcase Soda:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=12) "\tcase *Soda:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=25) "\t\t*x, err = ParseSoda(*v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {", + (string) (len=28) "\t\t\t\t*x, err = Soda(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=45) "func (x Soda) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=38) "func (x *Soda) Set(val string) error {", + (string) (len=25) "\tv, err := ParseSoda(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=34) "func (x *Soda) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=30) "func (x *Soda) Type() string {", + (string) (len=14) "\treturn \"Soda\"", + (string) (len=1) "}", + (string) "", + (string) (len=22) "type NullSoda struct {", + (string) (len=11) "\tSoda Soda", + (string) (len=11) "\tValid bool", + (string) (len=11) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=48) "func NewNullSoda(val interface{}) (x NullSoda) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=56) "func (x *NullSoda) Scan(value interface{}) (err error) {", + (string) (len=13) "\tx.Set = true", + (string) (len=18) "\tif value == nil {", + (string) (len=34) "\t\tx.Soda, x.Valid = Soda(0), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=25) "\terr = x.Soda.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=49) "func (x NullSoda) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=26) "\treturn int64(x.Soda), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// MarshalJSON correctly serializes a NullSoda to JSON.", + (string) (len=49) "func (n NullSoda) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=29) "\t\treturn json.Marshal(n.Soda)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=61) "// UnmarshalJSON correctly deserializes a NullSoda from JSON.", + (string) (len=50) "func (n *NullSoda) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=25) "type NullSodaStr struct {", + (string) (len=9) "\tNullSoda", + (string) (len=1) "}", + (string) "", + (string) (len=54) "func NewNullSodaStr(val interface{}) (x NullSodaStr) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=52) "func (x NullSodaStr) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=28) "\treturn x.Soda.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// MarshalJSON correctly serializes a NullSoda to JSON.", + (string) (len=52) "func (n NullSodaStr) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=29) "\t\treturn json.Marshal(n.Soda)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=61) "// UnmarshalJSON correctly deserializes a NullSoda from JSON.", + (string) (len=53) "func (n *NullSodaStr) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=70) "\t// Custom_prefix_StartWithNum is a StartNotZero of type StartWithNum.", + (string) (len=52) "\tCustom_prefix_StartWithNum StartNotZero = iota + 23", + (string) (len=60) "\t// Custom_prefix_NextNum is a StartNotZero of type NextNum.", + (string) (len=22) "\tCustom_prefix_NextNum", + (string) (len=1) ")", + (string) "", + (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", + (string) "", + (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", + (string) (len=53) "\tCustom_prefix_StartWithNum: _StartNotZeroName[0:12],", + (string) (len=54) "\tCustom_prefix_NextNum: _StartNotZeroName[12:19],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=39) "func (x StartNotZero) String() string {", + (string) (len=40) "\tif str, ok := _StartNotZeroMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", + (string) (len=71) "\t_StartNotZeroName[0:12]: Custom_prefix_StartWithNum,", + (string) (len=71) "\tstrings.ToLower(_StartNotZeroName[0:12]): Custom_prefix_StartWithNum,", + (string) (len=66) "\t_StartNotZeroName[12:19]: Custom_prefix_NextNum,", + (string) (len=66) "\tstrings.ToLower(_StartNotZeroName[12:19]): Custom_prefix_NextNum,", + (string) (len=1) "}", + (string) "", + (string) (len=68) "// ParseStartNotZero attempts to convert a string to a StartNotZero.", + (string) (len=59) "func ParseStartNotZero(name string) (StartNotZero, error) {", + (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=75) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=43) "func (x StartNotZero) Ptr() *StartNotZero {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=53) "func (x StartNotZero) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=57) "func (x *StartNotZero) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=36) "\ttmp, err := ParseStartNotZero(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=99) "var _StartNotZeroErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=60) "func (x *StartNotZero) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=22) "\t\t*x = StartNotZero(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=13) "\tcase string:", + (string) (len=32) "\t\t*x, err = ParseStartNotZero(v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {", + (string) (len=36) "\t\t\t\t*x, err = StartNotZero(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase []byte:", + (string) (len=40) "\t\t*x, err = ParseStartNotZero(string(v))", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {", + (string) (len=36) "\t\t\t\t*x, err = StartNotZero(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=19) "\tcase StartNotZero:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=20) "\tcase *StartNotZero:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=33) "\t\t*x, err = ParseStartNotZero(*v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {", + (string) (len=36) "\t\t\t\t*x, err = StartNotZero(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=53) "func (x StartNotZero) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=46) "func (x *StartNotZero) Set(val string) error {", + (string) (len=33) "\tv, err := ParseStartNotZero(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=42) "func (x *StartNotZero) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=38) "func (x *StartNotZero) Type() string {", + (string) (len=22) "\treturn \"StartNotZero\"", + (string) (len=1) "}", + (string) "", + (string) (len=30) "type NullStartNotZero struct {", + (string) (len=26) "\tStartNotZero StartNotZero", + (string) (len=18) "\tValid bool", + (string) (len=18) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=64) "func NewNullStartNotZero(val interface{}) (x NullStartNotZero) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=64) "func (x *NullStartNotZero) Scan(value interface{}) (err error) {", + (string) (len=13) "\tx.Set = true", + (string) (len=18) "\tif value == nil {", + (string) (len=50) "\t\tx.StartNotZero, x.Valid = StartNotZero(0), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=33) "\terr = x.StartNotZero.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=57) "func (x NullStartNotZero) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=34) "\treturn int64(x.StartNotZero), nil", + (string) (len=1) "}", + (string) "", + (string) (len=63) "// MarshalJSON correctly serializes a NullStartNotZero to JSON.", + (string) (len=57) "func (n NullStartNotZero) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=37) "\t\treturn json.Marshal(n.StartNotZero)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=69) "// UnmarshalJSON correctly deserializes a NullStartNotZero from JSON.", + (string) (len=58) "func (n *NullStartNotZero) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=33) "type NullStartNotZeroStr struct {", + (string) (len=17) "\tNullStartNotZero", + (string) (len=1) "}", + (string) "", + (string) (len=70) "func NewNullStartNotZeroStr(val interface{}) (x NullStartNotZeroStr) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=60) "func (x NullStartNotZeroStr) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=36) "\treturn x.StartNotZero.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=63) "// MarshalJSON correctly serializes a NullStartNotZero to JSON.", + (string) (len=60) "func (n NullStartNotZeroStr) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=37) "\t\treturn json.Marshal(n.StartNotZero)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=69) "// UnmarshalJSON correctly deserializes a NullStartNotZero from JSON.", + (string) (len=61) "func (n *NullStartNotZeroStr) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "" +} diff --git a/generator/.snapshots/TestExampleFile b/generator/.snapshots/TestExampleFile new file mode 100644 index 00000000..66263575 --- /dev/null +++ b/generator/.snapshots/TestExampleFile @@ -0,0 +1,2049 @@ +([]string) (len=2047) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", + (string) "", + (string) (len=17) "package generator", + (string) "", + (string) (len=8) "import (", + (string) (len=22) "\t\"database/sql/driver\"", + (string) (len=6) "\t\"fmt\"", + (string) (len=10) "\t\"strings\"", + (string) "", + (string) (len=24) "\t\"github.com/pkg/errors\"", + (string) (len=1) ")", + (string) "", + (string) (len=7) "const (", + (string) (len=38) "\t// AnimalCat is a Animal of type Cat.", + (string) (len=24) "\tAnimalCat Animal = iota", + (string) (len=38) "\t// AnimalDog is a Animal of type Dog.", + (string) (len=10) "\tAnimalDog", + (string) (len=40) "\t// AnimalFish is a Animal of type Fish.", + (string) (len=11) "\tAnimalFish", + (string) (len=1) ")", + (string) "", + (string) (len=32) "const _AnimalName = \"CatDogFish\"", + (string) "", + (string) (len=28) "var _AnimalNames = []string{", + (string) (len=18) "\t_AnimalName[0:3],", + (string) (len=18) "\t_AnimalName[3:6],", + (string) (len=19) "\t_AnimalName[6:10],", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// AnimalNames returns a list of possible string values of Animal.", + (string) (len=29) "func AnimalNames() []string {", + (string) (len=41) "\ttmp := make([]string, len(_AnimalNames))", + (string) (len=24) "\tcopy(tmp, _AnimalNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _AnimalMap = map[Animal]string{", + (string) (len=30) "\tAnimalCat: _AnimalName[0:3],", + (string) (len=30) "\tAnimalDog: _AnimalName[3:6],", + (string) (len=31) "\tAnimalFish: _AnimalName[6:10],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=33) "func (x Animal) String() string {", + (string) (len=34) "\tif str, ok := _AnimalMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=37) "var _AnimalValue = map[string]Animal{", + (string) (len=47) "\t_AnimalName[0:3]: AnimalCat,", + (string) (len=47) "\tstrings.ToLower(_AnimalName[0:3]): AnimalCat,", + (string) (len=47) "\t_AnimalName[3:6]: AnimalDog,", + (string) (len=47) "\tstrings.ToLower(_AnimalName[3:6]): AnimalDog,", + (string) (len=48) "\t_AnimalName[6:10]: AnimalFish,", + (string) (len=48) "\tstrings.ToLower(_AnimalName[6:10]): AnimalFish,", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// ParseAnimal attempts to convert a string to a Animal.", + (string) (len=47) "func ParseAnimal(name string) (Animal, error) {", + (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=54) "\tif x, ok := _AnimalValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=107) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal, try [%s]\", name, strings.Join(_AnimalNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=47) "func (x Animal) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=51) "func (x *Animal) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=30) "\ttmp, err := ParseAnimal(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=93) "var _AnimalErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=54) "func (x *Animal) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=16) "\t\t*x = Animal(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=13) "\tcase string:", + (string) (len=26) "\t\t*x, err = ParseAnimal(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=34) "\t\t*x, err = ParseAnimal(string(v))", + (string) (len=13) "\tcase Animal:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=14) "\tcase *Animal:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x, err = ParseAnimal(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=47) "func (x Animal) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=50) "\t// CasesTest_lower is a Cases of type Test_lower.", + (string) (len=29) "\tCasesTest_lower Cases = iota", + (string) (len=54) "\t// CasesTest_capital is a Cases of type Test_capital.", + (string) (len=18) "\tCasesTest_capital", + (string) (len=72) "\t// CasesAnotherLowerCaseStart is a Cases of type AnotherLowerCaseStart.", + (string) (len=27) "\tCasesAnotherLowerCaseStart", + (string) (len=1) ")", + (string) "", + (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", + (string) "", + (string) (len=27) "var _CasesNames = []string{", + (string) (len=18) "\t_CasesName[0:10],", + (string) (len=19) "\t_CasesName[10:22],", + (string) (len=19) "\t_CasesName[22:43],", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// CasesNames returns a list of possible string values of Cases.", + (string) (len=28) "func CasesNames() []string {", + (string) (len=40) "\ttmp := make([]string, len(_CasesNames))", + (string) (len=23) "\tcopy(tmp, _CasesNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _CasesMap = map[Cases]string{", + (string) (len=46) "\tCasesTest_lower: _CasesName[0:10],", + (string) (len=47) "\tCasesTest_capital: _CasesName[10:22],", + (string) (len=47) "\tCasesAnotherLowerCaseStart: _CasesName[22:43],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Cases) String() string {", + (string) (len=33) "\tif str, ok := _CasesMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _CasesValue = map[string]Cases{", + (string) (len=53) "\t_CasesName[0:10]: CasesTest_lower,", + (string) (len=53) "\tstrings.ToLower(_CasesName[0:10]): CasesTest_lower,", + (string) (len=55) "\t_CasesName[10:22]: CasesTest_capital,", + (string) (len=55) "\tstrings.ToLower(_CasesName[10:22]): CasesTest_capital,", + (string) (len=64) "\t_CasesName[22:43]: CasesAnotherLowerCaseStart,", + (string) (len=64) "\tstrings.ToLower(_CasesName[22:43]): CasesAnotherLowerCaseStart,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseCases attempts to convert a string to a Cases.", + (string) (len=45) "func ParseCases(name string) (Cases, error) {", + (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=53) "\tif x, ok := _CasesValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=104) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases, try [%s]\", name, strings.Join(_CasesNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Cases) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Cases) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseCases(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=92) "var _CasesErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=53) "func (x *Cases) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=15) "\t\t*x = Cases(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=13) "\tcase string:", + (string) (len=25) "\t\t*x, err = ParseCases(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=33) "\t\t*x, err = ParseCases(string(v))", + (string) (len=12) "\tcase Cases:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=13) "\tcase *Cases:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=26) "\t\t*x, err = ParseCases(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=46) "func (x Cases) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=40) "\t// ColorBlack is a Color of type Black.", + (string) (len=24) "\tColorBlack Color = iota", + (string) (len=40) "\t// ColorWhite is a Color of type White.", + (string) (len=11) "\tColorWhite", + (string) (len=36) "\t// ColorRed is a Color of type Red.", + (string) (len=9) "\tColorRed", + (string) (len=40) "\t// ColorGreen is a Color of type Green.", + (string) (len=11) "\tColorGreen", + (string) (len=38) "\t// ColorBlue is a Color of type Blue.", + (string) (len=28) "\tColorBlue Color = iota + 29", + (string) (len=38) "\t// ColorGrey is a Color of type Grey.", + (string) (len=10) "\tColorGrey", + (string) (len=42) "\t// ColorYellow is a Color of type Yellow.", + (string) (len=12) "\tColorYellow", + (string) (len=1) ")", + (string) "", + (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", + (string) "", + (string) (len=27) "var _ColorNames = []string{", + (string) (len=17) "\t_ColorName[0:5],", + (string) (len=18) "\t_ColorName[5:10],", + (string) (len=19) "\t_ColorName[10:13],", + (string) (len=19) "\t_ColorName[13:18],", + (string) (len=19) "\t_ColorName[18:22],", + (string) (len=19) "\t_ColorName[22:26],", + (string) (len=19) "\t_ColorName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ColorNames returns a list of possible string values of Color.", + (string) (len=28) "func ColorNames() []string {", + (string) (len=40) "\ttmp := make([]string, len(_ColorNames))", + (string) (len=23) "\tcopy(tmp, _ColorNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _ColorMap = map[Color]string{", + (string) (len=30) "\tColorBlack: _ColorName[0:5],", + (string) (len=31) "\tColorWhite: _ColorName[5:10],", + (string) (len=32) "\tColorRed: _ColorName[10:13],", + (string) (len=32) "\tColorGreen: _ColorName[13:18],", + (string) (len=32) "\tColorBlue: _ColorName[18:22],", + (string) (len=32) "\tColorGrey: _ColorName[22:26],", + (string) (len=32) "\tColorYellow: _ColorName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Color) String() string {", + (string) (len=33) "\tif str, ok := _ColorMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _ColorValue = map[string]Color{", + (string) (len=48) "\t_ColorName[0:5]: ColorBlack,", + (string) (len=48) "\tstrings.ToLower(_ColorName[0:5]): ColorBlack,", + (string) (len=48) "\t_ColorName[5:10]: ColorWhite,", + (string) (len=48) "\tstrings.ToLower(_ColorName[5:10]): ColorWhite,", + (string) (len=46) "\t_ColorName[10:13]: ColorRed,", + (string) (len=46) "\tstrings.ToLower(_ColorName[10:13]): ColorRed,", + (string) (len=48) "\t_ColorName[13:18]: ColorGreen,", + (string) (len=48) "\tstrings.ToLower(_ColorName[13:18]): ColorGreen,", + (string) (len=47) "\t_ColorName[18:22]: ColorBlue,", + (string) (len=47) "\tstrings.ToLower(_ColorName[18:22]): ColorBlue,", + (string) (len=47) "\t_ColorName[22:26]: ColorGrey,", + (string) (len=47) "\tstrings.ToLower(_ColorName[22:26]): ColorGrey,", + (string) (len=49) "\t_ColorName[26:32]: ColorYellow,", + (string) (len=49) "\tstrings.ToLower(_ColorName[26:32]): ColorYellow,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseColor attempts to convert a string to a Color.", + (string) (len=45) "func ParseColor(name string) (Color, error) {", + (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=53) "\tif x, ok := _ColorValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=104) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color, try [%s]\", name, strings.Join(_ColorNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Color) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Color) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseColor(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=92) "var _ColorErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=53) "func (x *Color) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=15) "\t\t*x = Color(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=13) "\tcase string:", + (string) (len=25) "\t\t*x, err = ParseColor(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=33) "\t\t*x, err = ParseColor(string(v))", + (string) (len=12) "\tcase Color:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=13) "\tcase *Color:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=26) "\t\t*x, err = ParseColor(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=46) "func (x Color) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=62) "\t// ColorWithCommentBlack is a ColorWithComment of type Black.", + (string) (len=46) "\tColorWithCommentBlack ColorWithComment = iota", + (string) (len=62) "\t// ColorWithCommentWhite is a ColorWithComment of type White.", + (string) (len=22) "\tColorWithCommentWhite", + (string) (len=58) "\t// ColorWithCommentRed is a ColorWithComment of type Red.", + (string) (len=20) "\tColorWithCommentRed", + (string) (len=62) "\t// ColorWithCommentGreen is a ColorWithComment of type Green.", + (string) (len=22) "\tColorWithCommentGreen", + (string) (len=60) "\t// ColorWithCommentBlue is a ColorWithComment of type Blue.", + (string) (len=23) "\t// Blue starts with 33", + (string) (len=50) "\tColorWithCommentBlue ColorWithComment = iota + 29", + (string) (len=60) "\t// ColorWithCommentGrey is a ColorWithComment of type Grey.", + (string) (len=21) "\tColorWithCommentGrey", + (string) (len=64) "\t// ColorWithCommentYellow is a ColorWithComment of type Yellow.", + (string) (len=23) "\tColorWithCommentYellow", + (string) (len=1) ")", + (string) "", + (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", + (string) "", + (string) (len=38) "var _ColorWithCommentNames = []string{", + (string) (len=28) "\t_ColorWithCommentName[0:5],", + (string) (len=29) "\t_ColorWithCommentName[5:10],", + (string) (len=30) "\t_ColorWithCommentName[10:13],", + (string) (len=30) "\t_ColorWithCommentName[13:18],", + (string) (len=30) "\t_ColorWithCommentName[18:22],", + (string) (len=30) "\t_ColorWithCommentName[22:26],", + (string) (len=30) "\t_ColorWithCommentName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=86) "// ColorWithCommentNames returns a list of possible string values of ColorWithComment.", + (string) (len=39) "func ColorWithCommentNames() []string {", + (string) (len=51) "\ttmp := make([]string, len(_ColorWithCommentNames))", + (string) (len=34) "\tcopy(tmp, _ColorWithCommentNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", + (string) (len=52) "\tColorWithCommentBlack: _ColorWithCommentName[0:5],", + (string) (len=53) "\tColorWithCommentWhite: _ColorWithCommentName[5:10],", + (string) (len=54) "\tColorWithCommentRed: _ColorWithCommentName[10:13],", + (string) (len=54) "\tColorWithCommentGreen: _ColorWithCommentName[13:18],", + (string) (len=54) "\tColorWithCommentBlue: _ColorWithCommentName[18:22],", + (string) (len=54) "\tColorWithCommentGrey: _ColorWithCommentName[22:26],", + (string) (len=54) "\tColorWithCommentYellow: _ColorWithCommentName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=43) "func (x ColorWithComment) String() string {", + (string) (len=44) "\tif str, ok := _ColorWithCommentMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", + (string) (len=70) "\t_ColorWithCommentName[0:5]: ColorWithCommentBlack,", + (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[0:5]): ColorWithCommentBlack,", + (string) (len=70) "\t_ColorWithCommentName[5:10]: ColorWithCommentWhite,", + (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[5:10]): ColorWithCommentWhite,", + (string) (len=68) "\t_ColorWithCommentName[10:13]: ColorWithCommentRed,", + (string) (len=68) "\tstrings.ToLower(_ColorWithCommentName[10:13]): ColorWithCommentRed,", + (string) (len=70) "\t_ColorWithCommentName[13:18]: ColorWithCommentGreen,", + (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[13:18]): ColorWithCommentGreen,", + (string) (len=69) "\t_ColorWithCommentName[18:22]: ColorWithCommentBlue,", + (string) (len=69) "\tstrings.ToLower(_ColorWithCommentName[18:22]): ColorWithCommentBlue,", + (string) (len=69) "\t_ColorWithCommentName[22:26]: ColorWithCommentGrey,", + (string) (len=69) "\tstrings.ToLower(_ColorWithCommentName[22:26]): ColorWithCommentGrey,", + (string) (len=71) "\t_ColorWithCommentName[26:32]: ColorWithCommentYellow,", + (string) (len=71) "\tstrings.ToLower(_ColorWithCommentName[26:32]): ColorWithCommentYellow,", + (string) (len=1) "}", + (string) "", + (string) (len=76) "// ParseColorWithComment attempts to convert a string to a ColorWithComment.", + (string) (len=67) "func ParseColorWithComment(name string) (ColorWithComment, error) {", + (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=64) "\tif x, ok := _ColorWithCommentValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=137) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment, try [%s]\", name, strings.Join(_ColorWithCommentNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=57) "func (x ColorWithComment) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=61) "func (x *ColorWithComment) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=40) "\ttmp, err := ParseColorWithComment(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=103) "var _ColorWithCommentErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=64) "func (x *ColorWithComment) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=26) "\t\t*x = ColorWithComment(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=13) "\tcase string:", + (string) (len=36) "\t\t*x, err = ParseColorWithComment(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=44) "\t\t*x, err = ParseColorWithComment(string(v))", + (string) (len=23) "\tcase ColorWithComment:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=24) "\tcase *ColorWithComment:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=37) "\t\t*x, err = ParseColorWithComment(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=57) "func (x ColorWithComment) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=64) "\t// ColorWithComment2Black is a ColorWithComment2 of type Black.", + (string) (len=48) "\tColorWithComment2Black ColorWithComment2 = iota", + (string) (len=64) "\t// ColorWithComment2White is a ColorWithComment2 of type White.", + (string) (len=23) "\tColorWithComment2White", + (string) (len=60) "\t// ColorWithComment2Red is a ColorWithComment2 of type Red.", + (string) (len=21) "\tColorWithComment2Red", + (string) (len=64) "\t// ColorWithComment2Green is a ColorWithComment2 of type Green.", + (string) (len=23) "\tColorWithComment2Green", + (string) (len=62) "\t// ColorWithComment2Blue is a ColorWithComment2 of type Blue.", + (string) (len=23) "\t// Blue starts with 33", + (string) (len=52) "\tColorWithComment2Blue ColorWithComment2 = iota + 29", + (string) (len=62) "\t// ColorWithComment2Grey is a ColorWithComment2 of type Grey.", + (string) (len=22) "\tColorWithComment2Grey", + (string) (len=66) "\t// ColorWithComment2Yellow is a ColorWithComment2 of type Yellow.", + (string) (len=24) "\tColorWithComment2Yellow", + (string) (len=1) ")", + (string) "", + (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", + (string) "", + (string) (len=39) "var _ColorWithComment2Names = []string{", + (string) (len=29) "\t_ColorWithComment2Name[0:5],", + (string) (len=30) "\t_ColorWithComment2Name[5:10],", + (string) (len=31) "\t_ColorWithComment2Name[10:13],", + (string) (len=31) "\t_ColorWithComment2Name[13:18],", + (string) (len=31) "\t_ColorWithComment2Name[18:22],", + (string) (len=31) "\t_ColorWithComment2Name[22:26],", + (string) (len=31) "\t_ColorWithComment2Name[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=88) "// ColorWithComment2Names returns a list of possible string values of ColorWithComment2.", + (string) (len=40) "func ColorWithComment2Names() []string {", + (string) (len=52) "\ttmp := make([]string, len(_ColorWithComment2Names))", + (string) (len=35) "\tcopy(tmp, _ColorWithComment2Names)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", + (string) (len=54) "\tColorWithComment2Black: _ColorWithComment2Name[0:5],", + (string) (len=55) "\tColorWithComment2White: _ColorWithComment2Name[5:10],", + (string) (len=56) "\tColorWithComment2Red: _ColorWithComment2Name[10:13],", + (string) (len=56) "\tColorWithComment2Green: _ColorWithComment2Name[13:18],", + (string) (len=56) "\tColorWithComment2Blue: _ColorWithComment2Name[18:22],", + (string) (len=56) "\tColorWithComment2Grey: _ColorWithComment2Name[22:26],", + (string) (len=56) "\tColorWithComment2Yellow: _ColorWithComment2Name[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment2) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment2Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", + (string) (len=72) "\t_ColorWithComment2Name[0:5]: ColorWithComment2Black,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): ColorWithComment2Black,", + (string) (len=72) "\t_ColorWithComment2Name[5:10]: ColorWithComment2White,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[5:10]): ColorWithComment2White,", + (string) (len=70) "\t_ColorWithComment2Name[10:13]: ColorWithComment2Red,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment2Name[10:13]): ColorWithComment2Red,", + (string) (len=72) "\t_ColorWithComment2Name[13:18]: ColorWithComment2Green,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[13:18]): ColorWithComment2Green,", + (string) (len=71) "\t_ColorWithComment2Name[18:22]: ColorWithComment2Blue,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment2Name[18:22]): ColorWithComment2Blue,", + (string) (len=71) "\t_ColorWithComment2Name[22:26]: ColorWithComment2Grey,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment2Name[22:26]): ColorWithComment2Grey,", + (string) (len=73) "\t_ColorWithComment2Name[26:32]: ColorWithComment2Yellow,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): ColorWithComment2Yellow,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2.", + (string) (len=69) "func ParseColorWithComment2(name string) (ColorWithComment2, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=65) "\tif x, ok := _ColorWithComment2Value[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=140) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2, try [%s]\", name, strings.Join(_ColorWithComment2Names, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment2) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment2) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment2(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=104) "var _ColorWithComment2ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=65) "func (x *ColorWithComment2) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=27) "\t\t*x = ColorWithComment2(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=13) "\tcase string:", + (string) (len=37) "\t\t*x, err = ParseColorWithComment2(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=45) "\t\t*x, err = ParseColorWithComment2(string(v))", + (string) (len=24) "\tcase ColorWithComment2:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=25) "\tcase *ColorWithComment2:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=38) "\t\t*x, err = ParseColorWithComment2(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x ColorWithComment2) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=64) "\t// ColorWithComment3Black is a ColorWithComment3 of type Black.", + (string) (len=48) "\tColorWithComment3Black ColorWithComment3 = iota", + (string) (len=64) "\t// ColorWithComment3White is a ColorWithComment3 of type White.", + (string) (len=23) "\tColorWithComment3White", + (string) (len=60) "\t// ColorWithComment3Red is a ColorWithComment3 of type Red.", + (string) (len=21) "\tColorWithComment3Red", + (string) (len=64) "\t// ColorWithComment3Green is a ColorWithComment3 of type Green.", + (string) (len=24) "\t// Green starts with 33", + (string) (len=53) "\tColorWithComment3Green ColorWithComment3 = iota + 30", + (string) (len=62) "\t// ColorWithComment3Blue is a ColorWithComment3 of type Blue.", + (string) (len=22) "\tColorWithComment3Blue", + (string) (len=62) "\t// ColorWithComment3Grey is a ColorWithComment3 of type Grey.", + (string) (len=22) "\tColorWithComment3Grey", + (string) (len=66) "\t// ColorWithComment3Yellow is a ColorWithComment3 of type Yellow.", + (string) (len=24) "\tColorWithComment3Yellow", + (string) (len=73) "\t// ColorWithComment3BlueGreen is a ColorWithComment3 of type Blue-Green.", + (string) (len=22) "\t// blue-green comment", + (string) (len=27) "\tColorWithComment3BlueGreen", + (string) (len=73) "\t// ColorWithComment3RedOrange is a ColorWithComment3 of type Red-Orange.", + (string) (len=27) "\tColorWithComment3RedOrange", + (string) (len=82) "\t// ColorWithComment3RedOrangeBlue is a ColorWithComment3 of type Red-Orange-Blue.", + (string) (len=31) "\tColorWithComment3RedOrangeBlue", + (string) (len=1) ")", + (string) "", + (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", + (string) "", + (string) (len=39) "var _ColorWithComment3Names = []string{", + (string) (len=29) "\t_ColorWithComment3Name[0:5],", + (string) (len=30) "\t_ColorWithComment3Name[5:10],", + (string) (len=31) "\t_ColorWithComment3Name[10:13],", + (string) (len=31) "\t_ColorWithComment3Name[13:18],", + (string) (len=31) "\t_ColorWithComment3Name[18:22],", + (string) (len=31) "\t_ColorWithComment3Name[22:26],", + (string) (len=31) "\t_ColorWithComment3Name[26:32],", + (string) (len=31) "\t_ColorWithComment3Name[32:42],", + (string) (len=31) "\t_ColorWithComment3Name[42:52],", + (string) (len=31) "\t_ColorWithComment3Name[52:67],", + (string) (len=1) "}", + (string) "", + (string) (len=88) "// ColorWithComment3Names returns a list of possible string values of ColorWithComment3.", + (string) (len=40) "func ColorWithComment3Names() []string {", + (string) (len=52) "\ttmp := make([]string, len(_ColorWithComment3Names))", + (string) (len=35) "\tcopy(tmp, _ColorWithComment3Names)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", + (string) (len=61) "\tColorWithComment3Black: _ColorWithComment3Name[0:5],", + (string) (len=62) "\tColorWithComment3White: _ColorWithComment3Name[5:10],", + (string) (len=63) "\tColorWithComment3Red: _ColorWithComment3Name[10:13],", + (string) (len=63) "\tColorWithComment3Green: _ColorWithComment3Name[13:18],", + (string) (len=63) "\tColorWithComment3Blue: _ColorWithComment3Name[18:22],", + (string) (len=63) "\tColorWithComment3Grey: _ColorWithComment3Name[22:26],", + (string) (len=63) "\tColorWithComment3Yellow: _ColorWithComment3Name[26:32],", + (string) (len=63) "\tColorWithComment3BlueGreen: _ColorWithComment3Name[32:42],", + (string) (len=63) "\tColorWithComment3RedOrange: _ColorWithComment3Name[42:52],", + (string) (len=63) "\tColorWithComment3RedOrangeBlue: _ColorWithComment3Name[52:67],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment3) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment3Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", + (string) (len=72) "\t_ColorWithComment3Name[0:5]: ColorWithComment3Black,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): ColorWithComment3Black,", + (string) (len=72) "\t_ColorWithComment3Name[5:10]: ColorWithComment3White,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[5:10]): ColorWithComment3White,", + (string) (len=70) "\t_ColorWithComment3Name[10:13]: ColorWithComment3Red,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment3Name[10:13]): ColorWithComment3Red,", + (string) (len=72) "\t_ColorWithComment3Name[13:18]: ColorWithComment3Green,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[13:18]): ColorWithComment3Green,", + (string) (len=71) "\t_ColorWithComment3Name[18:22]: ColorWithComment3Blue,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment3Name[18:22]): ColorWithComment3Blue,", + (string) (len=71) "\t_ColorWithComment3Name[22:26]: ColorWithComment3Grey,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment3Name[22:26]): ColorWithComment3Grey,", + (string) (len=73) "\t_ColorWithComment3Name[26:32]: ColorWithComment3Yellow,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment3Name[26:32]): ColorWithComment3Yellow,", + (string) (len=76) "\t_ColorWithComment3Name[32:42]: ColorWithComment3BlueGreen,", + (string) (len=76) "\tstrings.ToLower(_ColorWithComment3Name[32:42]): ColorWithComment3BlueGreen,", + (string) (len=76) "\t_ColorWithComment3Name[42:52]: ColorWithComment3RedOrange,", + (string) (len=76) "\tstrings.ToLower(_ColorWithComment3Name[42:52]): ColorWithComment3RedOrange,", + (string) (len=80) "\t_ColorWithComment3Name[52:67]: ColorWithComment3RedOrangeBlue,", + (string) (len=80) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): ColorWithComment3RedOrangeBlue,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3.", + (string) (len=69) "func ParseColorWithComment3(name string) (ColorWithComment3, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=65) "\tif x, ok := _ColorWithComment3Value[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=140) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3, try [%s]\", name, strings.Join(_ColorWithComment3Names, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment3) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment3) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment3(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=104) "var _ColorWithComment3ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=65) "func (x *ColorWithComment3) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=27) "\t\t*x = ColorWithComment3(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=13) "\tcase string:", + (string) (len=37) "\t\t*x, err = ParseColorWithComment3(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=45) "\t\t*x, err = ParseColorWithComment3(string(v))", + (string) (len=24) "\tcase ColorWithComment3:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=25) "\tcase *ColorWithComment3:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=38) "\t\t*x, err = ParseColorWithComment3(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x ColorWithComment3) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=18) "\t// Skipped value.", + (string) (len=15) "\t// Placeholder", + (string) (len=27) "\t_ ColorWithComment4 = iota", + (string) (len=64) "\t// ColorWithComment4Black is a ColorWithComment4 of type Black.", + (string) (len=23) "\tColorWithComment4Black", + (string) (len=64) "\t// ColorWithComment4White is a ColorWithComment4 of type White.", + (string) (len=23) "\tColorWithComment4White", + (string) (len=60) "\t// ColorWithComment4Red is a ColorWithComment4 of type Red.", + (string) (len=21) "\tColorWithComment4Red", + (string) (len=64) "\t// ColorWithComment4Green is a ColorWithComment4 of type Green.", + (string) (len=24) "\t// Green starts with 33", + (string) (len=53) "\tColorWithComment4Green ColorWithComment4 = iota + 29", + (string) (len=62) "\t// ColorWithComment4Blue is a ColorWithComment4 of type Blue.", + (string) (len=22) "\tColorWithComment4Blue", + (string) (len=62) "\t// ColorWithComment4Grey is a ColorWithComment4 of type Grey.", + (string) (len=22) "\tColorWithComment4Grey", + (string) (len=66) "\t// ColorWithComment4Yellow is a ColorWithComment4 of type Yellow.", + (string) (len=110) "\t// Where did all the (somewhat) bad fish go? (something else that goes in parentheses at the end of the line)", + (string) (len=24) "\tColorWithComment4Yellow", + (string) (len=73) "\t// ColorWithComment4BlueGreen is a ColorWithComment4 of type Blue-Green.", + (string) (len=22) "\t// blue-green comment", + (string) (len=27) "\tColorWithComment4BlueGreen", + (string) (len=73) "\t// ColorWithComment4RedOrange is a ColorWithComment4 of type Red-Orange.", + (string) (len=20) "\t// has a , in it!?!", + (string) (len=27) "\tColorWithComment4RedOrange", + (string) (len=1) ")", + (string) "", + (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", + (string) "", + (string) (len=39) "var _ColorWithComment4Names = []string{", + (string) (len=29) "\t_ColorWithComment4Name[0:5],", + (string) (len=30) "\t_ColorWithComment4Name[5:10],", + (string) (len=31) "\t_ColorWithComment4Name[10:13],", + (string) (len=31) "\t_ColorWithComment4Name[13:18],", + (string) (len=31) "\t_ColorWithComment4Name[18:22],", + (string) (len=31) "\t_ColorWithComment4Name[22:26],", + (string) (len=31) "\t_ColorWithComment4Name[26:32],", + (string) (len=31) "\t_ColorWithComment4Name[32:42],", + (string) (len=31) "\t_ColorWithComment4Name[42:52],", + (string) (len=1) "}", + (string) "", + (string) (len=88) "// ColorWithComment4Names returns a list of possible string values of ColorWithComment4.", + (string) (len=40) "func ColorWithComment4Names() []string {", + (string) (len=52) "\ttmp := make([]string, len(_ColorWithComment4Names))", + (string) (len=35) "\tcopy(tmp, _ColorWithComment4Names)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", + (string) (len=57) "\tColorWithComment4Black: _ColorWithComment4Name[0:5],", + (string) (len=58) "\tColorWithComment4White: _ColorWithComment4Name[5:10],", + (string) (len=59) "\tColorWithComment4Red: _ColorWithComment4Name[10:13],", + (string) (len=59) "\tColorWithComment4Green: _ColorWithComment4Name[13:18],", + (string) (len=59) "\tColorWithComment4Blue: _ColorWithComment4Name[18:22],", + (string) (len=59) "\tColorWithComment4Grey: _ColorWithComment4Name[22:26],", + (string) (len=59) "\tColorWithComment4Yellow: _ColorWithComment4Name[26:32],", + (string) (len=59) "\tColorWithComment4BlueGreen: _ColorWithComment4Name[32:42],", + (string) (len=59) "\tColorWithComment4RedOrange: _ColorWithComment4Name[42:52],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment4) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment4Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", + (string) (len=72) "\t_ColorWithComment4Name[0:5]: ColorWithComment4Black,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): ColorWithComment4Black,", + (string) (len=72) "\t_ColorWithComment4Name[5:10]: ColorWithComment4White,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[5:10]): ColorWithComment4White,", + (string) (len=70) "\t_ColorWithComment4Name[10:13]: ColorWithComment4Red,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment4Name[10:13]): ColorWithComment4Red,", + (string) (len=72) "\t_ColorWithComment4Name[13:18]: ColorWithComment4Green,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[13:18]): ColorWithComment4Green,", + (string) (len=71) "\t_ColorWithComment4Name[18:22]: ColorWithComment4Blue,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment4Name[18:22]): ColorWithComment4Blue,", + (string) (len=71) "\t_ColorWithComment4Name[22:26]: ColorWithComment4Grey,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment4Name[22:26]): ColorWithComment4Grey,", + (string) (len=73) "\t_ColorWithComment4Name[26:32]: ColorWithComment4Yellow,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment4Name[26:32]): ColorWithComment4Yellow,", + (string) (len=76) "\t_ColorWithComment4Name[32:42]: ColorWithComment4BlueGreen,", + (string) (len=76) "\tstrings.ToLower(_ColorWithComment4Name[32:42]): ColorWithComment4BlueGreen,", + (string) (len=76) "\t_ColorWithComment4Name[42:52]: ColorWithComment4RedOrange,", + (string) (len=76) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): ColorWithComment4RedOrange,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4.", + (string) (len=69) "func ParseColorWithComment4(name string) (ColorWithComment4, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=65) "\tif x, ok := _ColorWithComment4Value[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=140) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4, try [%s]\", name, strings.Join(_ColorWithComment4Names, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment4) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment4) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment4(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=104) "var _ColorWithComment4ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=65) "func (x *ColorWithComment4) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=27) "\t\t*x = ColorWithComment4(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=13) "\tcase string:", + (string) (len=37) "\t\t*x, err = ParseColorWithComment4(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=45) "\t\t*x, err = ParseColorWithComment4(string(v))", + (string) (len=24) "\tcase ColorWithComment4:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=25) "\tcase *ColorWithComment4:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=38) "\t\t*x, err = ParseColorWithComment4(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x ColorWithComment4) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=52) "\t// Enum64bitUnknown is a Enum64bit of type Unknown.", + (string) (len=34) "\tEnum64bitUnknown Enum64bit = iota", + (string) (len=48) "\t// Enum64bitE2P15 is a Enum64bit of type E2P15.", + (string) (len=40) "\tEnum64bitE2P15 Enum64bit = iota + 32767", + (string) (len=48) "\t// Enum64bitE2P16 is a Enum64bit of type E2P16.", + (string) (len=40) "\tEnum64bitE2P16 Enum64bit = iota + 65534", + (string) (len=48) "\t// Enum64bitE2P17 is a Enum64bit of type E2P17.", + (string) (len=41) "\tEnum64bitE2P17 Enum64bit = iota + 131069", + (string) (len=48) "\t// Enum64bitE2P18 is a Enum64bit of type E2P18.", + (string) (len=41) "\tEnum64bitE2P18 Enum64bit = iota + 262140", + (string) (len=48) "\t// Enum64bitE2P19 is a Enum64bit of type E2P19.", + (string) (len=41) "\tEnum64bitE2P19 Enum64bit = iota + 524283", + (string) (len=48) "\t// Enum64bitE2P20 is a Enum64bit of type E2P20.", + (string) (len=42) "\tEnum64bitE2P20 Enum64bit = iota + 1048570", + (string) (len=48) "\t// Enum64bitE2P21 is a Enum64bit of type E2P21.", + (string) (len=42) "\tEnum64bitE2P21 Enum64bit = iota + 2097145", + (string) (len=48) "\t// Enum64bitE2P22 is a Enum64bit of type E2P22.", + (string) (len=43) "\tEnum64bitE2P22 Enum64bit = iota + 33554424", + (string) (len=48) "\t// Enum64bitE2P23 is a Enum64bit of type E2P23.", + (string) (len=43) "\tEnum64bitE2P23 Enum64bit = iota + 67108855", + (string) (len=48) "\t// Enum64bitE2P28 is a Enum64bit of type E2P28.", + (string) (len=44) "\tEnum64bitE2P28 Enum64bit = iota + 536870902", + (string) (len=48) "\t// Enum64bitE2P30 is a Enum64bit of type E2P30.", + (string) (len=45) "\tEnum64bitE2P30 Enum64bit = iota + 1073741813", + (string) (len=48) "\t// Enum64bitE2P31 is a Enum64bit of type E2P31.", + (string) (len=45) "\tEnum64bitE2P31 Enum64bit = iota + 2147483636", + (string) (len=48) "\t// Enum64bitE2P32 is a Enum64bit of type E2P32.", + (string) (len=45) "\tEnum64bitE2P32 Enum64bit = iota + 4294967283", + (string) (len=48) "\t// Enum64bitE2P33 is a Enum64bit of type E2P33.", + (string) (len=45) "\tEnum64bitE2P33 Enum64bit = iota + 8454967282", + (string) (len=1) ")", + (string) "", + (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", + (string) "", + (string) (len=31) "var _Enum64bitNames = []string{", + (string) (len=21) "\t_Enum64bitName[0:7],", + (string) (len=22) "\t_Enum64bitName[7:12],", + (string) (len=23) "\t_Enum64bitName[12:17],", + (string) (len=23) "\t_Enum64bitName[17:22],", + (string) (len=23) "\t_Enum64bitName[22:27],", + (string) (len=23) "\t_Enum64bitName[27:32],", + (string) (len=23) "\t_Enum64bitName[32:37],", + (string) (len=23) "\t_Enum64bitName[37:42],", + (string) (len=23) "\t_Enum64bitName[42:47],", + (string) (len=23) "\t_Enum64bitName[47:52],", + (string) (len=23) "\t_Enum64bitName[52:57],", + (string) (len=23) "\t_Enum64bitName[57:62],", + (string) (len=23) "\t_Enum64bitName[62:67],", + (string) (len=23) "\t_Enum64bitName[67:72],", + (string) (len=23) "\t_Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=72) "// Enum64bitNames returns a list of possible string values of Enum64bit.", + (string) (len=32) "func Enum64bitNames() []string {", + (string) (len=44) "\ttmp := make([]string, len(_Enum64bitNames))", + (string) (len=27) "\tcopy(tmp, _Enum64bitNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", + (string) (len=39) "\tEnum64bitUnknown: _Enum64bitName[0:7],", + (string) (len=40) "\tEnum64bitE2P15: _Enum64bitName[7:12],", + (string) (len=41) "\tEnum64bitE2P16: _Enum64bitName[12:17],", + (string) (len=41) "\tEnum64bitE2P17: _Enum64bitName[17:22],", + (string) (len=41) "\tEnum64bitE2P18: _Enum64bitName[22:27],", + (string) (len=41) "\tEnum64bitE2P19: _Enum64bitName[27:32],", + (string) (len=41) "\tEnum64bitE2P20: _Enum64bitName[32:37],", + (string) (len=41) "\tEnum64bitE2P21: _Enum64bitName[37:42],", + (string) (len=41) "\tEnum64bitE2P22: _Enum64bitName[42:47],", + (string) (len=41) "\tEnum64bitE2P23: _Enum64bitName[47:52],", + (string) (len=41) "\tEnum64bitE2P28: _Enum64bitName[52:57],", + (string) (len=41) "\tEnum64bitE2P30: _Enum64bitName[57:62],", + (string) (len=41) "\tEnum64bitE2P31: _Enum64bitName[62:67],", + (string) (len=41) "\tEnum64bitE2P32: _Enum64bitName[67:72],", + (string) (len=41) "\tEnum64bitE2P33: _Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x Enum64bit) String() string {", + (string) (len=37) "\tif str, ok := _Enum64bitMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", + (string) (len=58) "\t_Enum64bitName[0:7]: Enum64bitUnknown,", + (string) (len=58) "\tstrings.ToLower(_Enum64bitName[0:7]): Enum64bitUnknown,", + (string) (len=56) "\t_Enum64bitName[7:12]: Enum64bitE2P15,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[7:12]): Enum64bitE2P15,", + (string) (len=56) "\t_Enum64bitName[12:17]: Enum64bitE2P16,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[12:17]): Enum64bitE2P16,", + (string) (len=56) "\t_Enum64bitName[17:22]: Enum64bitE2P17,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[17:22]): Enum64bitE2P17,", + (string) (len=56) "\t_Enum64bitName[22:27]: Enum64bitE2P18,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[22:27]): Enum64bitE2P18,", + (string) (len=56) "\t_Enum64bitName[27:32]: Enum64bitE2P19,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[27:32]): Enum64bitE2P19,", + (string) (len=56) "\t_Enum64bitName[32:37]: Enum64bitE2P20,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[32:37]): Enum64bitE2P20,", + (string) (len=56) "\t_Enum64bitName[37:42]: Enum64bitE2P21,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[37:42]): Enum64bitE2P21,", + (string) (len=56) "\t_Enum64bitName[42:47]: Enum64bitE2P22,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[42:47]): Enum64bitE2P22,", + (string) (len=56) "\t_Enum64bitName[47:52]: Enum64bitE2P23,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[47:52]): Enum64bitE2P23,", + (string) (len=56) "\t_Enum64bitName[52:57]: Enum64bitE2P28,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[52:57]): Enum64bitE2P28,", + (string) (len=56) "\t_Enum64bitName[57:62]: Enum64bitE2P30,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[57:62]): Enum64bitE2P30,", + (string) (len=56) "\t_Enum64bitName[62:67]: Enum64bitE2P31,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[62:67]): Enum64bitE2P31,", + (string) (len=56) "\t_Enum64bitName[67:72]: Enum64bitE2P32,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[67:72]): Enum64bitE2P32,", + (string) (len=56) "\t_Enum64bitName[72:77]: Enum64bitE2P33,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[72:77]): Enum64bitE2P33,", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// ParseEnum64bit attempts to convert a string to a Enum64bit.", + (string) (len=53) "func ParseEnum64bit(name string) (Enum64bit, error) {", + (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=57) "\tif x, ok := _Enum64bitValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=116) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit, try [%s]\", name, strings.Join(_Enum64bitNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=50) "func (x Enum64bit) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=54) "func (x *Enum64bit) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=33) "\ttmp, err := ParseEnum64bit(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=96) "var _Enum64bitErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=57) "func (x *Enum64bit) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=19) "\t\t*x = Enum64bit(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=13) "\tcase string:", + (string) (len=29) "\t\t*x, err = ParseEnum64bit(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=37) "\t\t*x, err = ParseEnum64bit(string(v))", + (string) (len=16) "\tcase Enum64bit:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=17) "\tcase *Enum64bit:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=30) "\t\t*x, err = ParseEnum64bit(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=50) "func (x Enum64bit) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=42) "\t// ModelToyota is a Model of type Toyota.", + (string) (len=25) "\tModelToyota Model = iota", + (string) (len=18) "\t// Skipped value.", + (string) (len=2) "\t_", + (string) (len=40) "\t// ModelChevy is a Model of type Chevy.", + (string) (len=11) "\tModelChevy", + (string) (len=18) "\t// Skipped value.", + (string) (len=2) "\t_", + (string) (len=38) "\t// ModelFord is a Model of type Ford.", + (string) (len=10) "\tModelFord", + (string) (len=1) ")", + (string) "", + (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", + (string) "", + (string) (len=27) "var _ModelNames = []string{", + (string) (len=17) "\t_ModelName[0:6],", + (string) (len=18) "\t_ModelName[6:11],", + (string) (len=19) "\t_ModelName[11:15],", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ModelNames returns a list of possible string values of Model.", + (string) (len=28) "func ModelNames() []string {", + (string) (len=40) "\ttmp := make([]string, len(_ModelNames))", + (string) (len=23) "\tcopy(tmp, _ModelNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _ModelMap = map[Model]string{", + (string) (len=30) "\tModelToyota: _ModelName[0:6],", + (string) (len=31) "\tModelChevy: _ModelName[6:11],", + (string) (len=32) "\tModelFord: _ModelName[11:15],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Model) String() string {", + (string) (len=33) "\tif str, ok := _ModelMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _ModelValue = map[string]Model{", + (string) (len=49) "\t_ModelName[0:6]: ModelToyota,", + (string) (len=49) "\tstrings.ToLower(_ModelName[0:6]): ModelToyota,", + (string) (len=48) "\t_ModelName[6:11]: ModelChevy,", + (string) (len=48) "\tstrings.ToLower(_ModelName[6:11]): ModelChevy,", + (string) (len=47) "\t_ModelName[11:15]: ModelFord,", + (string) (len=47) "\tstrings.ToLower(_ModelName[11:15]): ModelFord,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseModel attempts to convert a string to a Model.", + (string) (len=45) "func ParseModel(name string) (Model, error) {", + (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=53) "\tif x, ok := _ModelValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=104) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model, try [%s]\", name, strings.Join(_ModelNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Model) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Model) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseModel(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=92) "var _ModelErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=53) "func (x *Model) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=15) "\t\t*x = Model(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=13) "\tcase string:", + (string) (len=25) "\t\t*x, err = ParseModel(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=33) "\t\t*x, err = ParseModel(string(v))", + (string) (len=12) "\tcase Model:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=13) "\tcase *Model:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=26) "\t\t*x, err = ParseModel(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=46) "func (x Model) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=61) "\t// SanitizingTestHyphen is a Sanitizing of type Test-Hyphen.", + (string) (len=39) "\tSanitizingTestHyphen Sanitizing = iota", + (string) (len=63) "\t// SanitizingHyphenStart is a Sanitizing of type -HyphenStart.", + (string) (len=22) "\tSanitizingHyphenStart", + (string) (len=72) "\t// Sanitizing_underscoreFirst is a Sanitizing of type _underscoreFirst.", + (string) (len=27) "\tSanitizing_underscoreFirst", + (string) (len=64) "\t// Sanitizing0numberFirst is a Sanitizing of type 0numberFirst.", + (string) (len=23) "\tSanitizing0numberFirst", + (string) (len=60) "\t// Sanitizing123456789a is a Sanitizing of type 123456789a.", + (string) (len=21) "\tSanitizing123456789a", + (string) (len=61) "\t// Sanitizing123123Asdf is a Sanitizing of type 123123-Asdf.", + (string) (len=21) "\tSanitizing123123Asdf", + (string) (len=66) "\t// SanitizingEndingHyphen is a Sanitizing of type Ending-Hyphen-.", + (string) (len=23) "\tSanitizingEndingHyphen", + (string) (len=1) ")", + (string) "", + (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", + (string) "", + (string) (len=32) "var _SanitizingNames = []string{", + (string) (len=23) "\t_SanitizingName[0:11],", + (string) (len=24) "\t_SanitizingName[11:23],", + (string) (len=24) "\t_SanitizingName[23:39],", + (string) (len=24) "\t_SanitizingName[39:51],", + (string) (len=24) "\t_SanitizingName[51:61],", + (string) (len=24) "\t_SanitizingName[61:72],", + (string) (len=24) "\t_SanitizingName[72:86],", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// SanitizingNames returns a list of possible string values of Sanitizing.", + (string) (len=33) "func SanitizingNames() []string {", + (string) (len=45) "\ttmp := make([]string, len(_SanitizingNames))", + (string) (len=28) "\tcopy(tmp, _SanitizingNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", + (string) (len=51) "\tSanitizingTestHyphen: _SanitizingName[0:11],", + (string) (len=52) "\tSanitizingHyphenStart: _SanitizingName[11:23],", + (string) (len=52) "\tSanitizing_underscoreFirst: _SanitizingName[23:39],", + (string) (len=52) "\tSanitizing0numberFirst: _SanitizingName[39:51],", + (string) (len=52) "\tSanitizing123456789a: _SanitizingName[51:61],", + (string) (len=52) "\tSanitizing123123Asdf: _SanitizingName[61:72],", + (string) (len=52) "\tSanitizingEndingHyphen: _SanitizingName[72:86],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x Sanitizing) String() string {", + (string) (len=38) "\tif str, ok := _SanitizingMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", + (string) (len=63) "\t_SanitizingName[0:11]: SanitizingTestHyphen,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[0:11]): SanitizingTestHyphen,", + (string) (len=64) "\t_SanitizingName[11:23]: SanitizingHyphenStart,", + (string) (len=64) "\tstrings.ToLower(_SanitizingName[11:23]): SanitizingHyphenStart,", + (string) (len=69) "\t_SanitizingName[23:39]: Sanitizing_underscoreFirst,", + (string) (len=69) "\tstrings.ToLower(_SanitizingName[23:39]): Sanitizing_underscoreFirst,", + (string) (len=65) "\t_SanitizingName[39:51]: Sanitizing0numberFirst,", + (string) (len=65) "\tstrings.ToLower(_SanitizingName[39:51]): Sanitizing0numberFirst,", + (string) (len=63) "\t_SanitizingName[51:61]: Sanitizing123456789a,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[51:61]): Sanitizing123456789a,", + (string) (len=63) "\t_SanitizingName[61:72]: Sanitizing123123Asdf,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[61:72]): Sanitizing123123Asdf,", + (string) (len=65) "\t_SanitizingName[72:86]: SanitizingEndingHyphen,", + (string) (len=65) "\tstrings.ToLower(_SanitizingName[72:86]): SanitizingEndingHyphen,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseSanitizing attempts to convert a string to a Sanitizing.", + (string) (len=55) "func ParseSanitizing(name string) (Sanitizing, error) {", + (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=58) "\tif x, ok := _SanitizingValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=119) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing, try [%s]\", name, strings.Join(_SanitizingNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x Sanitizing) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *Sanitizing) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=34) "\ttmp, err := ParseSanitizing(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=97) "var _SanitizingErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *Sanitizing) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=20) "\t\t*x = Sanitizing(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseSanitizing(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=38) "\t\t*x, err = ParseSanitizing(string(v))", + (string) (len=17) "\tcase Sanitizing:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=18) "\tcase *Sanitizing:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseSanitizing(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x Sanitizing) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=36) "\t// SodaCoke is a Soda of type Coke.", + (string) (len=21) "\tSodaCoke Soda = iota", + (string) (len=38) "\t// SodaPepsi is a Soda of type Pepsi.", + (string) (len=10) "\tSodaPepsi", + (string) (len=40) "\t// SodaMtnDew is a Soda of type MtnDew.", + (string) (len=11) "\tSodaMtnDew", + (string) (len=1) ")", + (string) "", + (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", + (string) "", + (string) (len=26) "var _SodaNames = []string{", + (string) (len=16) "\t_SodaName[0:4],", + (string) (len=16) "\t_SodaName[4:9],", + (string) (len=17) "\t_SodaName[9:15],", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// SodaNames returns a list of possible string values of Soda.", + (string) (len=27) "func SodaNames() []string {", + (string) (len=39) "\ttmp := make([]string, len(_SodaNames))", + (string) (len=22) "\tcopy(tmp, _SodaNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=31) "var _SodaMap = map[Soda]string{", + (string) (len=28) "\tSodaCoke: _SodaName[0:4],", + (string) (len=28) "\tSodaPepsi: _SodaName[4:9],", + (string) (len=29) "\tSodaMtnDew: _SodaName[9:15],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=31) "func (x Soda) String() string {", + (string) (len=32) "\tif str, ok := _SodaMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _SodaValue = map[string]Soda{", + (string) (len=44) "\t_SodaName[0:4]: SodaCoke,", + (string) (len=44) "\tstrings.ToLower(_SodaName[0:4]): SodaCoke,", + (string) (len=45) "\t_SodaName[4:9]: SodaPepsi,", + (string) (len=45) "\tstrings.ToLower(_SodaName[4:9]): SodaPepsi,", + (string) (len=46) "\t_SodaName[9:15]: SodaMtnDew,", + (string) (len=46) "\tstrings.ToLower(_SodaName[9:15]): SodaMtnDew,", + (string) (len=1) "}", + (string) "", + (string) (len=52) "// ParseSoda attempts to convert a string to a Soda.", + (string) (len=43) "func ParseSoda(name string) (Soda, error) {", + (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=52) "\tif x, ok := _SodaValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=101) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda, try [%s]\", name, strings.Join(_SodaNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=45) "func (x Soda) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=49) "func (x *Soda) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=28) "\ttmp, err := ParseSoda(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=91) "var _SodaErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=52) "func (x *Soda) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=14) "\t\t*x = Soda(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=13) "\tcase string:", + (string) (len=24) "\t\t*x, err = ParseSoda(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=32) "\t\t*x, err = ParseSoda(string(v))", + (string) (len=11) "\tcase Soda:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=12) "\tcase *Soda:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=25) "\t\t*x, err = ParseSoda(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=45) "func (x Soda) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=68) "\t// StartNotZeroStartWithNum is a StartNotZero of type StartWithNum.", + (string) (len=50) "\tStartNotZeroStartWithNum StartNotZero = iota + 23", + (string) (len=58) "\t// StartNotZeroNextNum is a StartNotZero of type NextNum.", + (string) (len=20) "\tStartNotZeroNextNum", + (string) (len=1) ")", + (string) "", + (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", + (string) "", + (string) (len=34) "var _StartNotZeroNames = []string{", + (string) (len=25) "\t_StartNotZeroName[0:12],", + (string) (len=26) "\t_StartNotZeroName[12:19],", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// StartNotZeroNames returns a list of possible string values of StartNotZero.", + (string) (len=35) "func StartNotZeroNames() []string {", + (string) (len=47) "\ttmp := make([]string, len(_StartNotZeroNames))", + (string) (len=30) "\tcopy(tmp, _StartNotZeroNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", + (string) (len=51) "\tStartNotZeroStartWithNum: _StartNotZeroName[0:12],", + (string) (len=52) "\tStartNotZeroNextNum: _StartNotZeroName[12:19],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=39) "func (x StartNotZero) String() string {", + (string) (len=40) "\tif str, ok := _StartNotZeroMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", + (string) (len=69) "\t_StartNotZeroName[0:12]: StartNotZeroStartWithNum,", + (string) (len=69) "\tstrings.ToLower(_StartNotZeroName[0:12]): StartNotZeroStartWithNum,", + (string) (len=64) "\t_StartNotZeroName[12:19]: StartNotZeroNextNum,", + (string) (len=64) "\tstrings.ToLower(_StartNotZeroName[12:19]): StartNotZeroNextNum,", + (string) (len=1) "}", + (string) "", + (string) (len=68) "// ParseStartNotZero attempts to convert a string to a StartNotZero.", + (string) (len=59) "func ParseStartNotZero(name string) (StartNotZero, error) {", + (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=60) "\tif x, ok := _StartNotZeroValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=125) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero, try [%s]\", name, strings.Join(_StartNotZeroNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=53) "func (x StartNotZero) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=57) "func (x *StartNotZero) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=36) "\ttmp, err := ParseStartNotZero(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=99) "var _StartNotZeroErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=60) "func (x *StartNotZero) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=22) "\t\t*x = StartNotZero(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=13) "\tcase string:", + (string) (len=32) "\t\t*x, err = ParseStartNotZero(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=40) "\t\t*x, err = ParseStartNotZero(string(v))", + (string) (len=19) "\tcase StartNotZero:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=20) "\tcase *StartNotZero:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=33) "\t\t*x, err = ParseStartNotZero(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=53) "func (x StartNotZero) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "" +} diff --git a/generator/.snapshots/TestNoPrefixExampleFile b/generator/.snapshots/TestNoPrefixExampleFile new file mode 100644 index 00000000..4834ad98 --- /dev/null +++ b/generator/.snapshots/TestNoPrefixExampleFile @@ -0,0 +1,1130 @@ +([]string) (len=1128) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", + (string) "", + (string) (len=17) "package generator", + (string) "", + (string) (len=8) "import (", + (string) (len=6) "\t\"fmt\"", + (string) (len=10) "\t\"strings\"", + (string) (len=1) ")", + (string) "", + (string) (len=7) "const (", + (string) (len=32) "\t// Cat is a Animal of type Cat.", + (string) (len=18) "\tCat Animal = iota", + (string) (len=32) "\t// Dog is a Animal of type Dog.", + (string) (len=4) "\tDog", + (string) (len=34) "\t// Fish is a Animal of type Fish.", + (string) (len=5) "\tFish", + (string) (len=1) ")", + (string) "", + (string) (len=32) "const _AnimalName = \"CatDogFish\"", + (string) "", + (string) (len=35) "var _AnimalMap = map[Animal]string{", + (string) (len=24) "\tCat: _AnimalName[0:3],", + (string) (len=24) "\tDog: _AnimalName[3:6],", + (string) (len=25) "\tFish: _AnimalName[6:10],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=33) "func (x Animal) String() string {", + (string) (len=34) "\tif str, ok := _AnimalMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=37) "var _AnimalValue = map[string]Animal{", + (string) (len=41) "\t_AnimalName[0:3]: Cat,", + (string) (len=41) "\tstrings.ToLower(_AnimalName[0:3]): Cat,", + (string) (len=41) "\t_AnimalName[3:6]: Dog,", + (string) (len=41) "\tstrings.ToLower(_AnimalName[3:6]): Dog,", + (string) (len=42) "\t_AnimalName[6:10]: Fish,", + (string) (len=42) "\tstrings.ToLower(_AnimalName[6:10]): Fish,", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// ParseAnimal attempts to convert a string to a Animal.", + (string) (len=47) "func ParseAnimal(name string) (Animal, error) {", + (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=63) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=47) "func (x Animal) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=51) "func (x *Animal) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=30) "\ttmp, err := ParseAnimal(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=40) "func (x *Animal) Set(val string) error {", + (string) (len=27) "\tv, err := ParseAnimal(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=36) "func (x *Animal) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=32) "func (x *Animal) Type() string {", + (string) (len=16) "\treturn \"Animal\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=45) "\t// Test_lower is a Cases of type Test_lower.", + (string) (len=24) "\tTest_lower Cases = iota", + (string) (len=49) "\t// Test_capital is a Cases of type Test_capital.", + (string) (len=13) "\tTest_capital", + (string) (len=67) "\t// AnotherLowerCaseStart is a Cases of type AnotherLowerCaseStart.", + (string) (len=22) "\tAnotherLowerCaseStart", + (string) (len=1) ")", + (string) "", + (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", + (string) "", + (string) (len=33) "var _CasesMap = map[Cases]string{", + (string) (len=41) "\tTest_lower: _CasesName[0:10],", + (string) (len=42) "\tTest_capital: _CasesName[10:22],", + (string) (len=42) "\tAnotherLowerCaseStart: _CasesName[22:43],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Cases) String() string {", + (string) (len=33) "\tif str, ok := _CasesMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _CasesValue = map[string]Cases{", + (string) (len=48) "\t_CasesName[0:10]: Test_lower,", + (string) (len=48) "\tstrings.ToLower(_CasesName[0:10]): Test_lower,", + (string) (len=50) "\t_CasesName[10:22]: Test_capital,", + (string) (len=50) "\tstrings.ToLower(_CasesName[10:22]): Test_capital,", + (string) (len=59) "\t_CasesName[22:43]: AnotherLowerCaseStart,", + (string) (len=59) "\tstrings.ToLower(_CasesName[22:43]): AnotherLowerCaseStart,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseCases attempts to convert a string to a Cases.", + (string) (len=45) "func ParseCases(name string) (Cases, error) {", + (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=61) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Cases) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Cases) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseCases(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=39) "func (x *Cases) Set(val string) error {", + (string) (len=26) "\tv, err := ParseCases(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=35) "func (x *Cases) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=31) "func (x *Cases) Type() string {", + (string) (len=15) "\treturn \"Cases\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=35) "\t// Black is a Color of type Black.", + (string) (len=19) "\tBlack Color = iota", + (string) (len=35) "\t// White is a Color of type White.", + (string) (len=6) "\tWhite", + (string) (len=31) "\t// Red is a Color of type Red.", + (string) (len=4) "\tRed", + (string) (len=35) "\t// Green is a Color of type Green.", + (string) (len=6) "\tGreen", + (string) (len=33) "\t// Blue is a Color of type Blue.", + (string) (len=23) "\tBlue Color = iota + 29", + (string) (len=33) "\t// Grey is a Color of type Grey.", + (string) (len=5) "\tGrey", + (string) (len=37) "\t// Yellow is a Color of type Yellow.", + (string) (len=7) "\tYellow", + (string) (len=1) ")", + (string) "", + (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", + (string) "", + (string) (len=33) "var _ColorMap = map[Color]string{", + (string) (len=25) "\tBlack: _ColorName[0:5],", + (string) (len=26) "\tWhite: _ColorName[5:10],", + (string) (len=27) "\tRed: _ColorName[10:13],", + (string) (len=27) "\tGreen: _ColorName[13:18],", + (string) (len=27) "\tBlue: _ColorName[18:22],", + (string) (len=27) "\tGrey: _ColorName[22:26],", + (string) (len=27) "\tYellow: _ColorName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Color) String() string {", + (string) (len=33) "\tif str, ok := _ColorMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _ColorValue = map[string]Color{", + (string) (len=43) "\t_ColorName[0:5]: Black,", + (string) (len=43) "\tstrings.ToLower(_ColorName[0:5]): Black,", + (string) (len=43) "\t_ColorName[5:10]: White,", + (string) (len=43) "\tstrings.ToLower(_ColorName[5:10]): White,", + (string) (len=41) "\t_ColorName[10:13]: Red,", + (string) (len=41) "\tstrings.ToLower(_ColorName[10:13]): Red,", + (string) (len=43) "\t_ColorName[13:18]: Green,", + (string) (len=43) "\tstrings.ToLower(_ColorName[13:18]): Green,", + (string) (len=42) "\t_ColorName[18:22]: Blue,", + (string) (len=42) "\tstrings.ToLower(_ColorName[18:22]): Blue,", + (string) (len=42) "\t_ColorName[22:26]: Grey,", + (string) (len=42) "\tstrings.ToLower(_ColorName[22:26]): Grey,", + (string) (len=44) "\t_ColorName[26:32]: Yellow,", + (string) (len=44) "\tstrings.ToLower(_ColorName[26:32]): Yellow,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseColor attempts to convert a string to a Color.", + (string) (len=45) "func ParseColor(name string) (Color, error) {", + (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=61) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Color) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Color) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseColor(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=39) "func (x *Color) Set(val string) error {", + (string) (len=26) "\tv, err := ParseColor(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=35) "func (x *Color) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=31) "func (x *Color) Type() string {", + (string) (len=15) "\treturn \"Color\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=46) "\t// Black is a ColorWithComment of type Black.", + (string) (len=30) "\tBlack ColorWithComment = iota", + (string) (len=46) "\t// White is a ColorWithComment of type White.", + (string) (len=6) "\tWhite", + (string) (len=42) "\t// Red is a ColorWithComment of type Red.", + (string) (len=4) "\tRed", + (string) (len=46) "\t// Green is a ColorWithComment of type Green.", + (string) (len=6) "\tGreen", + (string) (len=44) "\t// Blue is a ColorWithComment of type Blue.", + (string) (len=23) "\t// Blue starts with 33", + (string) (len=34) "\tBlue ColorWithComment = iota + 29", + (string) (len=44) "\t// Grey is a ColorWithComment of type Grey.", + (string) (len=5) "\tGrey", + (string) (len=48) "\t// Yellow is a ColorWithComment of type Yellow.", + (string) (len=7) "\tYellow", + (string) (len=1) ")", + (string) "", + (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", + (string) "", + (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", + (string) (len=36) "\tBlack: _ColorWithCommentName[0:5],", + (string) (len=37) "\tWhite: _ColorWithCommentName[5:10],", + (string) (len=38) "\tRed: _ColorWithCommentName[10:13],", + (string) (len=38) "\tGreen: _ColorWithCommentName[13:18],", + (string) (len=38) "\tBlue: _ColorWithCommentName[18:22],", + (string) (len=38) "\tGrey: _ColorWithCommentName[22:26],", + (string) (len=38) "\tYellow: _ColorWithCommentName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=43) "func (x ColorWithComment) String() string {", + (string) (len=44) "\tif str, ok := _ColorWithCommentMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", + (string) (len=54) "\t_ColorWithCommentName[0:5]: Black,", + (string) (len=54) "\tstrings.ToLower(_ColorWithCommentName[0:5]): Black,", + (string) (len=54) "\t_ColorWithCommentName[5:10]: White,", + (string) (len=54) "\tstrings.ToLower(_ColorWithCommentName[5:10]): White,", + (string) (len=52) "\t_ColorWithCommentName[10:13]: Red,", + (string) (len=52) "\tstrings.ToLower(_ColorWithCommentName[10:13]): Red,", + (string) (len=54) "\t_ColorWithCommentName[13:18]: Green,", + (string) (len=54) "\tstrings.ToLower(_ColorWithCommentName[13:18]): Green,", + (string) (len=53) "\t_ColorWithCommentName[18:22]: Blue,", + (string) (len=53) "\tstrings.ToLower(_ColorWithCommentName[18:22]): Blue,", + (string) (len=53) "\t_ColorWithCommentName[22:26]: Grey,", + (string) (len=53) "\tstrings.ToLower(_ColorWithCommentName[22:26]): Grey,", + (string) (len=55) "\t_ColorWithCommentName[26:32]: Yellow,", + (string) (len=55) "\tstrings.ToLower(_ColorWithCommentName[26:32]): Yellow,", + (string) (len=1) "}", + (string) "", + (string) (len=76) "// ParseColorWithComment attempts to convert a string to a ColorWithComment.", + (string) (len=67) "func ParseColorWithComment(name string) (ColorWithComment, error) {", + (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=83) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=57) "func (x ColorWithComment) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=61) "func (x *ColorWithComment) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=40) "\ttmp, err := ParseColorWithComment(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=50) "func (x *ColorWithComment) Set(val string) error {", + (string) (len=37) "\tv, err := ParseColorWithComment(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=46) "func (x *ColorWithComment) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=42) "func (x *ColorWithComment) Type() string {", + (string) (len=26) "\treturn \"ColorWithComment\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=47) "\t// Black is a ColorWithComment2 of type Black.", + (string) (len=31) "\tBlack ColorWithComment2 = iota", + (string) (len=47) "\t// White is a ColorWithComment2 of type White.", + (string) (len=6) "\tWhite", + (string) (len=43) "\t// Red is a ColorWithComment2 of type Red.", + (string) (len=4) "\tRed", + (string) (len=47) "\t// Green is a ColorWithComment2 of type Green.", + (string) (len=6) "\tGreen", + (string) (len=45) "\t// Blue is a ColorWithComment2 of type Blue.", + (string) (len=23) "\t// Blue starts with 33", + (string) (len=35) "\tBlue ColorWithComment2 = iota + 29", + (string) (len=45) "\t// Grey is a ColorWithComment2 of type Grey.", + (string) (len=5) "\tGrey", + (string) (len=49) "\t// Yellow is a ColorWithComment2 of type Yellow.", + (string) (len=7) "\tYellow", + (string) (len=1) ")", + (string) "", + (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", + (string) "", + (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", + (string) (len=37) "\tBlack: _ColorWithComment2Name[0:5],", + (string) (len=38) "\tWhite: _ColorWithComment2Name[5:10],", + (string) (len=39) "\tRed: _ColorWithComment2Name[10:13],", + (string) (len=39) "\tGreen: _ColorWithComment2Name[13:18],", + (string) (len=39) "\tBlue: _ColorWithComment2Name[18:22],", + (string) (len=39) "\tGrey: _ColorWithComment2Name[22:26],", + (string) (len=39) "\tYellow: _ColorWithComment2Name[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment2) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment2Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", + (string) (len=55) "\t_ColorWithComment2Name[0:5]: Black,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): Black,", + (string) (len=55) "\t_ColorWithComment2Name[5:10]: White,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment2Name[5:10]): White,", + (string) (len=53) "\t_ColorWithComment2Name[10:13]: Red,", + (string) (len=53) "\tstrings.ToLower(_ColorWithComment2Name[10:13]): Red,", + (string) (len=55) "\t_ColorWithComment2Name[13:18]: Green,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment2Name[13:18]): Green,", + (string) (len=54) "\t_ColorWithComment2Name[18:22]: Blue,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment2Name[18:22]): Blue,", + (string) (len=54) "\t_ColorWithComment2Name[22:26]: Grey,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment2Name[22:26]): Grey,", + (string) (len=56) "\t_ColorWithComment2Name[26:32]: Yellow,", + (string) (len=56) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): Yellow,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2.", + (string) (len=69) "func ParseColorWithComment2(name string) (ColorWithComment2, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=85) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment2) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment2) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment2(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=51) "func (x *ColorWithComment2) Set(val string) error {", + (string) (len=38) "\tv, err := ParseColorWithComment2(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=47) "func (x *ColorWithComment2) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=43) "func (x *ColorWithComment2) Type() string {", + (string) (len=27) "\treturn \"ColorWithComment2\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=47) "\t// Black is a ColorWithComment3 of type Black.", + (string) (len=31) "\tBlack ColorWithComment3 = iota", + (string) (len=47) "\t// White is a ColorWithComment3 of type White.", + (string) (len=6) "\tWhite", + (string) (len=43) "\t// Red is a ColorWithComment3 of type Red.", + (string) (len=4) "\tRed", + (string) (len=47) "\t// Green is a ColorWithComment3 of type Green.", + (string) (len=24) "\t// Green starts with 33", + (string) (len=36) "\tGreen ColorWithComment3 = iota + 30", + (string) (len=45) "\t// Blue is a ColorWithComment3 of type Blue.", + (string) (len=5) "\tBlue", + (string) (len=45) "\t// Grey is a ColorWithComment3 of type Grey.", + (string) (len=5) "\tGrey", + (string) (len=49) "\t// Yellow is a ColorWithComment3 of type Yellow.", + (string) (len=7) "\tYellow", + (string) (len=56) "\t// BlueGreen is a ColorWithComment3 of type Blue-Green.", + (string) (len=22) "\t// blue-green comment", + (string) (len=10) "\tBlueGreen", + (string) (len=56) "\t// RedOrange is a ColorWithComment3 of type Red-Orange.", + (string) (len=10) "\tRedOrange", + (string) (len=65) "\t// RedOrangeBlue is a ColorWithComment3 of type Red-Orange-Blue.", + (string) (len=14) "\tRedOrangeBlue", + (string) (len=1) ")", + (string) "", + (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", + (string) "", + (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", + (string) (len=44) "\tBlack: _ColorWithComment3Name[0:5],", + (string) (len=45) "\tWhite: _ColorWithComment3Name[5:10],", + (string) (len=46) "\tRed: _ColorWithComment3Name[10:13],", + (string) (len=46) "\tGreen: _ColorWithComment3Name[13:18],", + (string) (len=46) "\tBlue: _ColorWithComment3Name[18:22],", + (string) (len=46) "\tGrey: _ColorWithComment3Name[22:26],", + (string) (len=46) "\tYellow: _ColorWithComment3Name[26:32],", + (string) (len=46) "\tBlueGreen: _ColorWithComment3Name[32:42],", + (string) (len=46) "\tRedOrange: _ColorWithComment3Name[42:52],", + (string) (len=46) "\tRedOrangeBlue: _ColorWithComment3Name[52:67],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment3) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment3Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", + (string) (len=55) "\t_ColorWithComment3Name[0:5]: Black,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): Black,", + (string) (len=55) "\t_ColorWithComment3Name[5:10]: White,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment3Name[5:10]): White,", + (string) (len=53) "\t_ColorWithComment3Name[10:13]: Red,", + (string) (len=53) "\tstrings.ToLower(_ColorWithComment3Name[10:13]): Red,", + (string) (len=55) "\t_ColorWithComment3Name[13:18]: Green,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment3Name[13:18]): Green,", + (string) (len=54) "\t_ColorWithComment3Name[18:22]: Blue,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment3Name[18:22]): Blue,", + (string) (len=54) "\t_ColorWithComment3Name[22:26]: Grey,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment3Name[22:26]): Grey,", + (string) (len=56) "\t_ColorWithComment3Name[26:32]: Yellow,", + (string) (len=56) "\tstrings.ToLower(_ColorWithComment3Name[26:32]): Yellow,", + (string) (len=59) "\t_ColorWithComment3Name[32:42]: BlueGreen,", + (string) (len=59) "\tstrings.ToLower(_ColorWithComment3Name[32:42]): BlueGreen,", + (string) (len=59) "\t_ColorWithComment3Name[42:52]: RedOrange,", + (string) (len=59) "\tstrings.ToLower(_ColorWithComment3Name[42:52]): RedOrange,", + (string) (len=63) "\t_ColorWithComment3Name[52:67]: RedOrangeBlue,", + (string) (len=63) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): RedOrangeBlue,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3.", + (string) (len=69) "func ParseColorWithComment3(name string) (ColorWithComment3, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=85) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment3) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment3) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment3(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=51) "func (x *ColorWithComment3) Set(val string) error {", + (string) (len=38) "\tv, err := ParseColorWithComment3(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=47) "func (x *ColorWithComment3) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=43) "func (x *ColorWithComment3) Type() string {", + (string) (len=27) "\treturn \"ColorWithComment3\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=18) "\t// Skipped value.", + (string) (len=15) "\t// Placeholder", + (string) (len=27) "\t_ ColorWithComment4 = iota", + (string) (len=47) "\t// Black is a ColorWithComment4 of type Black.", + (string) (len=6) "\tBlack", + (string) (len=47) "\t// White is a ColorWithComment4 of type White.", + (string) (len=6) "\tWhite", + (string) (len=43) "\t// Red is a ColorWithComment4 of type Red.", + (string) (len=4) "\tRed", + (string) (len=47) "\t// Green is a ColorWithComment4 of type Green.", + (string) (len=24) "\t// Green starts with 33", + (string) (len=36) "\tGreen ColorWithComment4 = iota + 29", + (string) (len=45) "\t// Blue is a ColorWithComment4 of type Blue.", + (string) (len=5) "\tBlue", + (string) (len=45) "\t// Grey is a ColorWithComment4 of type Grey.", + (string) (len=5) "\tGrey", + (string) (len=49) "\t// Yellow is a ColorWithComment4 of type Yellow.", + (string) (len=110) "\t// Where did all the (somewhat) bad fish go? (something else that goes in parentheses at the end of the line)", + (string) (len=7) "\tYellow", + (string) (len=56) "\t// BlueGreen is a ColorWithComment4 of type Blue-Green.", + (string) (len=22) "\t// blue-green comment", + (string) (len=10) "\tBlueGreen", + (string) (len=56) "\t// RedOrange is a ColorWithComment4 of type Red-Orange.", + (string) (len=20) "\t// has a , in it!?!", + (string) (len=10) "\tRedOrange", + (string) (len=1) ")", + (string) "", + (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", + (string) "", + (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", + (string) (len=40) "\tBlack: _ColorWithComment4Name[0:5],", + (string) (len=41) "\tWhite: _ColorWithComment4Name[5:10],", + (string) (len=42) "\tRed: _ColorWithComment4Name[10:13],", + (string) (len=42) "\tGreen: _ColorWithComment4Name[13:18],", + (string) (len=42) "\tBlue: _ColorWithComment4Name[18:22],", + (string) (len=42) "\tGrey: _ColorWithComment4Name[22:26],", + (string) (len=42) "\tYellow: _ColorWithComment4Name[26:32],", + (string) (len=42) "\tBlueGreen: _ColorWithComment4Name[32:42],", + (string) (len=42) "\tRedOrange: _ColorWithComment4Name[42:52],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment4) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment4Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", + (string) (len=55) "\t_ColorWithComment4Name[0:5]: Black,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): Black,", + (string) (len=55) "\t_ColorWithComment4Name[5:10]: White,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment4Name[5:10]): White,", + (string) (len=53) "\t_ColorWithComment4Name[10:13]: Red,", + (string) (len=53) "\tstrings.ToLower(_ColorWithComment4Name[10:13]): Red,", + (string) (len=55) "\t_ColorWithComment4Name[13:18]: Green,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment4Name[13:18]): Green,", + (string) (len=54) "\t_ColorWithComment4Name[18:22]: Blue,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment4Name[18:22]): Blue,", + (string) (len=54) "\t_ColorWithComment4Name[22:26]: Grey,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment4Name[22:26]): Grey,", + (string) (len=56) "\t_ColorWithComment4Name[26:32]: Yellow,", + (string) (len=56) "\tstrings.ToLower(_ColorWithComment4Name[26:32]): Yellow,", + (string) (len=59) "\t_ColorWithComment4Name[32:42]: BlueGreen,", + (string) (len=59) "\tstrings.ToLower(_ColorWithComment4Name[32:42]): BlueGreen,", + (string) (len=59) "\t_ColorWithComment4Name[42:52]: RedOrange,", + (string) (len=59) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): RedOrange,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4.", + (string) (len=69) "func ParseColorWithComment4(name string) (ColorWithComment4, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=85) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment4) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment4) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment4(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=51) "func (x *ColorWithComment4) Set(val string) error {", + (string) (len=38) "\tv, err := ParseColorWithComment4(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=47) "func (x *ColorWithComment4) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=43) "func (x *ColorWithComment4) Type() string {", + (string) (len=27) "\treturn \"ColorWithComment4\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=43) "\t// Unknown is a Enum64bit of type Unknown.", + (string) (len=25) "\tUnknown Enum64bit = iota", + (string) (len=39) "\t// E2P15 is a Enum64bit of type E2P15.", + (string) (len=31) "\tE2P15 Enum64bit = iota + 32767", + (string) (len=39) "\t// E2P16 is a Enum64bit of type E2P16.", + (string) (len=31) "\tE2P16 Enum64bit = iota + 65534", + (string) (len=39) "\t// E2P17 is a Enum64bit of type E2P17.", + (string) (len=32) "\tE2P17 Enum64bit = iota + 131069", + (string) (len=39) "\t// E2P18 is a Enum64bit of type E2P18.", + (string) (len=32) "\tE2P18 Enum64bit = iota + 262140", + (string) (len=39) "\t// E2P19 is a Enum64bit of type E2P19.", + (string) (len=32) "\tE2P19 Enum64bit = iota + 524283", + (string) (len=39) "\t// E2P20 is a Enum64bit of type E2P20.", + (string) (len=33) "\tE2P20 Enum64bit = iota + 1048570", + (string) (len=39) "\t// E2P21 is a Enum64bit of type E2P21.", + (string) (len=33) "\tE2P21 Enum64bit = iota + 2097145", + (string) (len=39) "\t// E2P22 is a Enum64bit of type E2P22.", + (string) (len=34) "\tE2P22 Enum64bit = iota + 33554424", + (string) (len=39) "\t// E2P23 is a Enum64bit of type E2P23.", + (string) (len=34) "\tE2P23 Enum64bit = iota + 67108855", + (string) (len=39) "\t// E2P28 is a Enum64bit of type E2P28.", + (string) (len=35) "\tE2P28 Enum64bit = iota + 536870902", + (string) (len=39) "\t// E2P30 is a Enum64bit of type E2P30.", + (string) (len=36) "\tE2P30 Enum64bit = iota + 1073741813", + (string) (len=39) "\t// E2P31 is a Enum64bit of type E2P31.", + (string) (len=36) "\tE2P31 Enum64bit = iota + 2147483636", + (string) (len=39) "\t// E2P32 is a Enum64bit of type E2P32.", + (string) (len=36) "\tE2P32 Enum64bit = iota + 4294967283", + (string) (len=39) "\t// E2P33 is a Enum64bit of type E2P33.", + (string) (len=36) "\tE2P33 Enum64bit = iota + 8454967282", + (string) (len=1) ")", + (string) "", + (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", + (string) "", + (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", + (string) (len=30) "\tUnknown: _Enum64bitName[0:7],", + (string) (len=31) "\tE2P15: _Enum64bitName[7:12],", + (string) (len=32) "\tE2P16: _Enum64bitName[12:17],", + (string) (len=32) "\tE2P17: _Enum64bitName[17:22],", + (string) (len=32) "\tE2P18: _Enum64bitName[22:27],", + (string) (len=32) "\tE2P19: _Enum64bitName[27:32],", + (string) (len=32) "\tE2P20: _Enum64bitName[32:37],", + (string) (len=32) "\tE2P21: _Enum64bitName[37:42],", + (string) (len=32) "\tE2P22: _Enum64bitName[42:47],", + (string) (len=32) "\tE2P23: _Enum64bitName[47:52],", + (string) (len=32) "\tE2P28: _Enum64bitName[52:57],", + (string) (len=32) "\tE2P30: _Enum64bitName[57:62],", + (string) (len=32) "\tE2P31: _Enum64bitName[62:67],", + (string) (len=32) "\tE2P32: _Enum64bitName[67:72],", + (string) (len=32) "\tE2P33: _Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x Enum64bit) String() string {", + (string) (len=37) "\tif str, ok := _Enum64bitMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", + (string) (len=49) "\t_Enum64bitName[0:7]: Unknown,", + (string) (len=49) "\tstrings.ToLower(_Enum64bitName[0:7]): Unknown,", + (string) (len=47) "\t_Enum64bitName[7:12]: E2P15,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[7:12]): E2P15,", + (string) (len=47) "\t_Enum64bitName[12:17]: E2P16,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[12:17]): E2P16,", + (string) (len=47) "\t_Enum64bitName[17:22]: E2P17,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[17:22]): E2P17,", + (string) (len=47) "\t_Enum64bitName[22:27]: E2P18,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[22:27]): E2P18,", + (string) (len=47) "\t_Enum64bitName[27:32]: E2P19,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[27:32]): E2P19,", + (string) (len=47) "\t_Enum64bitName[32:37]: E2P20,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[32:37]): E2P20,", + (string) (len=47) "\t_Enum64bitName[37:42]: E2P21,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[37:42]): E2P21,", + (string) (len=47) "\t_Enum64bitName[42:47]: E2P22,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[42:47]): E2P22,", + (string) (len=47) "\t_Enum64bitName[47:52]: E2P23,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[47:52]): E2P23,", + (string) (len=47) "\t_Enum64bitName[52:57]: E2P28,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[52:57]): E2P28,", + (string) (len=47) "\t_Enum64bitName[57:62]: E2P30,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[57:62]): E2P30,", + (string) (len=47) "\t_Enum64bitName[62:67]: E2P31,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[62:67]): E2P31,", + (string) (len=47) "\t_Enum64bitName[67:72]: E2P32,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[67:72]): E2P32,", + (string) (len=47) "\t_Enum64bitName[72:77]: E2P33,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[72:77]): E2P33,", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// ParseEnum64bit attempts to convert a string to a Enum64bit.", + (string) (len=53) "func ParseEnum64bit(name string) (Enum64bit, error) {", + (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=69) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=50) "func (x Enum64bit) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=54) "func (x *Enum64bit) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=33) "\ttmp, err := ParseEnum64bit(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=43) "func (x *Enum64bit) Set(val string) error {", + (string) (len=30) "\tv, err := ParseEnum64bit(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=39) "func (x *Enum64bit) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=35) "func (x *Enum64bit) Type() string {", + (string) (len=19) "\treturn \"Enum64bit\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=37) "\t// Toyota is a Model of type Toyota.", + (string) (len=20) "\tToyota Model = iota", + (string) (len=18) "\t// Skipped value.", + (string) (len=2) "\t_", + (string) (len=35) "\t// Chevy is a Model of type Chevy.", + (string) (len=6) "\tChevy", + (string) (len=18) "\t// Skipped value.", + (string) (len=2) "\t_", + (string) (len=33) "\t// Ford is a Model of type Ford.", + (string) (len=5) "\tFord", + (string) (len=1) ")", + (string) "", + (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", + (string) "", + (string) (len=33) "var _ModelMap = map[Model]string{", + (string) (len=25) "\tToyota: _ModelName[0:6],", + (string) (len=26) "\tChevy: _ModelName[6:11],", + (string) (len=27) "\tFord: _ModelName[11:15],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Model) String() string {", + (string) (len=33) "\tif str, ok := _ModelMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _ModelValue = map[string]Model{", + (string) (len=44) "\t_ModelName[0:6]: Toyota,", + (string) (len=44) "\tstrings.ToLower(_ModelName[0:6]): Toyota,", + (string) (len=43) "\t_ModelName[6:11]: Chevy,", + (string) (len=43) "\tstrings.ToLower(_ModelName[6:11]): Chevy,", + (string) (len=42) "\t_ModelName[11:15]: Ford,", + (string) (len=42) "\tstrings.ToLower(_ModelName[11:15]): Ford,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseModel attempts to convert a string to a Model.", + (string) (len=45) "func ParseModel(name string) (Model, error) {", + (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=61) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Model) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Model) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseModel(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=39) "func (x *Model) Set(val string) error {", + (string) (len=26) "\tv, err := ParseModel(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=35) "func (x *Model) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=31) "func (x *Model) Type() string {", + (string) (len=15) "\treturn \"Model\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=51) "\t// TestHyphen is a Sanitizing of type Test-Hyphen.", + (string) (len=29) "\tTestHyphen Sanitizing = iota", + (string) (len=54) "\t// XHyphenStart is a Sanitizing of type -HyphenStart.", + (string) (len=13) "\tXHyphenStart", + (string) (len=63) "\t// X_underscoreFirst is a Sanitizing of type _underscoreFirst.", + (string) (len=18) "\tX_underscoreFirst", + (string) (len=55) "\t// X0numberFirst is a Sanitizing of type 0numberFirst.", + (string) (len=14) "\tX0numberFirst", + (string) (len=51) "\t// X123456789a is a Sanitizing of type 123456789a.", + (string) (len=12) "\tX123456789a", + (string) (len=52) "\t// X123123Asdf is a Sanitizing of type 123123-Asdf.", + (string) (len=12) "\tX123123Asdf", + (string) (len=56) "\t// EndingHyphen is a Sanitizing of type Ending-Hyphen-.", + (string) (len=13) "\tEndingHyphen", + (string) (len=1) ")", + (string) "", + (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", + (string) "", + (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", + (string) (len=42) "\tTestHyphen: _SanitizingName[0:11],", + (string) (len=43) "\tXHyphenStart: _SanitizingName[11:23],", + (string) (len=43) "\tX_underscoreFirst: _SanitizingName[23:39],", + (string) (len=43) "\tX0numberFirst: _SanitizingName[39:51],", + (string) (len=43) "\tX123456789a: _SanitizingName[51:61],", + (string) (len=43) "\tX123123Asdf: _SanitizingName[61:72],", + (string) (len=43) "\tEndingHyphen: _SanitizingName[72:86],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x Sanitizing) String() string {", + (string) (len=38) "\tif str, ok := _SanitizingMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", + (string) (len=53) "\t_SanitizingName[0:11]: TestHyphen,", + (string) (len=53) "\tstrings.ToLower(_SanitizingName[0:11]): TestHyphen,", + (string) (len=55) "\t_SanitizingName[11:23]: XHyphenStart,", + (string) (len=55) "\tstrings.ToLower(_SanitizingName[11:23]): XHyphenStart,", + (string) (len=60) "\t_SanitizingName[23:39]: X_underscoreFirst,", + (string) (len=60) "\tstrings.ToLower(_SanitizingName[23:39]): X_underscoreFirst,", + (string) (len=56) "\t_SanitizingName[39:51]: X0numberFirst,", + (string) (len=56) "\tstrings.ToLower(_SanitizingName[39:51]): X0numberFirst,", + (string) (len=54) "\t_SanitizingName[51:61]: X123456789a,", + (string) (len=54) "\tstrings.ToLower(_SanitizingName[51:61]): X123456789a,", + (string) (len=54) "\t_SanitizingName[61:72]: X123123Asdf,", + (string) (len=54) "\tstrings.ToLower(_SanitizingName[61:72]): X123123Asdf,", + (string) (len=55) "\t_SanitizingName[72:86]: EndingHyphen,", + (string) (len=55) "\tstrings.ToLower(_SanitizingName[72:86]): EndingHyphen,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseSanitizing attempts to convert a string to a Sanitizing.", + (string) (len=55) "func ParseSanitizing(name string) (Sanitizing, error) {", + (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=71) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x Sanitizing) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *Sanitizing) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=34) "\ttmp, err := ParseSanitizing(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=44) "func (x *Sanitizing) Set(val string) error {", + (string) (len=31) "\tv, err := ParseSanitizing(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=40) "func (x *Sanitizing) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=36) "func (x *Sanitizing) Type() string {", + (string) (len=20) "\treturn \"Sanitizing\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=32) "\t// Coke is a Soda of type Coke.", + (string) (len=17) "\tCoke Soda = iota", + (string) (len=34) "\t// Pepsi is a Soda of type Pepsi.", + (string) (len=6) "\tPepsi", + (string) (len=36) "\t// MtnDew is a Soda of type MtnDew.", + (string) (len=7) "\tMtnDew", + (string) (len=1) ")", + (string) "", + (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", + (string) "", + (string) (len=31) "var _SodaMap = map[Soda]string{", + (string) (len=24) "\tCoke: _SodaName[0:4],", + (string) (len=24) "\tPepsi: _SodaName[4:9],", + (string) (len=25) "\tMtnDew: _SodaName[9:15],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=31) "func (x Soda) String() string {", + (string) (len=32) "\tif str, ok := _SodaMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _SodaValue = map[string]Soda{", + (string) (len=40) "\t_SodaName[0:4]: Coke,", + (string) (len=40) "\tstrings.ToLower(_SodaName[0:4]): Coke,", + (string) (len=41) "\t_SodaName[4:9]: Pepsi,", + (string) (len=41) "\tstrings.ToLower(_SodaName[4:9]): Pepsi,", + (string) (len=42) "\t_SodaName[9:15]: MtnDew,", + (string) (len=42) "\tstrings.ToLower(_SodaName[9:15]): MtnDew,", + (string) (len=1) "}", + (string) "", + (string) (len=52) "// ParseSoda attempts to convert a string to a Soda.", + (string) (len=43) "func ParseSoda(name string) (Soda, error) {", + (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=59) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=45) "func (x Soda) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=49) "func (x *Soda) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=28) "\ttmp, err := ParseSoda(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=38) "func (x *Soda) Set(val string) error {", + (string) (len=25) "\tv, err := ParseSoda(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=34) "func (x *Soda) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=30) "func (x *Soda) Type() string {", + (string) (len=14) "\treturn \"Soda\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=56) "\t// StartWithNum is a StartNotZero of type StartWithNum.", + (string) (len=38) "\tStartWithNum StartNotZero = iota + 23", + (string) (len=46) "\t// NextNum is a StartNotZero of type NextNum.", + (string) (len=8) "\tNextNum", + (string) (len=1) ")", + (string) "", + (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", + (string) "", + (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", + (string) (len=39) "\tStartWithNum: _StartNotZeroName[0:12],", + (string) (len=40) "\tNextNum: _StartNotZeroName[12:19],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=39) "func (x StartNotZero) String() string {", + (string) (len=40) "\tif str, ok := _StartNotZeroMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", + (string) (len=57) "\t_StartNotZeroName[0:12]: StartWithNum,", + (string) (len=57) "\tstrings.ToLower(_StartNotZeroName[0:12]): StartWithNum,", + (string) (len=52) "\t_StartNotZeroName[12:19]: NextNum,", + (string) (len=52) "\tstrings.ToLower(_StartNotZeroName[12:19]): NextNum,", + (string) (len=1) "}", + (string) "", + (string) (len=68) "// ParseStartNotZero attempts to convert a string to a StartNotZero.", + (string) (len=59) "func ParseStartNotZero(name string) (StartNotZero, error) {", + (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=75) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=53) "func (x StartNotZero) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=57) "func (x *StartNotZero) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=36) "\ttmp, err := ParseStartNotZero(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=46) "func (x *StartNotZero) Set(val string) error {", + (string) (len=33) "\tv, err := ParseStartNotZero(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=42) "func (x *StartNotZero) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=38) "func (x *StartNotZero) Type() string {", + (string) (len=22) "\treturn \"StartNotZero\"", + (string) (len=1) "}", + (string) "" +} diff --git a/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel b/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel new file mode 100644 index 00000000..e920dd2e --- /dev/null +++ b/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel @@ -0,0 +1,1130 @@ +([]string) (len=1128) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", + (string) "", + (string) (len=17) "package generator", + (string) "", + (string) (len=8) "import (", + (string) (len=6) "\t\"fmt\"", + (string) (len=10) "\t\"strings\"", + (string) (len=1) ")", + (string) "", + (string) (len=7) "const (", + (string) (len=32) "\t// Cat is a Animal of type Cat.", + (string) (len=18) "\tCat Animal = iota", + (string) (len=32) "\t// Dog is a Animal of type Dog.", + (string) (len=4) "\tDog", + (string) (len=34) "\t// Fish is a Animal of type Fish.", + (string) (len=5) "\tFish", + (string) (len=1) ")", + (string) "", + (string) (len=32) "const _AnimalName = \"CatDogFish\"", + (string) "", + (string) (len=35) "var _AnimalMap = map[Animal]string{", + (string) (len=24) "\tCat: _AnimalName[0:3],", + (string) (len=24) "\tDog: _AnimalName[3:6],", + (string) (len=25) "\tFish: _AnimalName[6:10],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=33) "func (x Animal) String() string {", + (string) (len=34) "\tif str, ok := _AnimalMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=37) "var _AnimalValue = map[string]Animal{", + (string) (len=41) "\t_AnimalName[0:3]: Cat,", + (string) (len=41) "\tstrings.ToLower(_AnimalName[0:3]): Cat,", + (string) (len=41) "\t_AnimalName[3:6]: Dog,", + (string) (len=41) "\tstrings.ToLower(_AnimalName[3:6]): Dog,", + (string) (len=42) "\t_AnimalName[6:10]: Fish,", + (string) (len=42) "\tstrings.ToLower(_AnimalName[6:10]): Fish,", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// ParseAnimal attempts to convert a string to a Animal.", + (string) (len=47) "func ParseAnimal(name string) (Animal, error) {", + (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=63) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=47) "func (x Animal) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=51) "func (x *Animal) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=30) "\ttmp, err := ParseAnimal(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=40) "func (x *Animal) Set(val string) error {", + (string) (len=27) "\tv, err := ParseAnimal(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=36) "func (x *Animal) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=32) "func (x *Animal) Type() string {", + (string) (len=16) "\treturn \"Animal\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=44) "\t// TestLower is a Cases of type Test_lower.", + (string) (len=23) "\tTestLower Cases = iota", + (string) (len=48) "\t// TestCapital is a Cases of type Test_capital.", + (string) (len=12) "\tTestCapital", + (string) (len=67) "\t// AnotherLowerCaseStart is a Cases of type AnotherLowerCaseStart.", + (string) (len=22) "\tAnotherLowerCaseStart", + (string) (len=1) ")", + (string) "", + (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", + (string) "", + (string) (len=33) "var _CasesMap = map[Cases]string{", + (string) (len=41) "\tTestLower: _CasesName[0:10],", + (string) (len=42) "\tTestCapital: _CasesName[10:22],", + (string) (len=42) "\tAnotherLowerCaseStart: _CasesName[22:43],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Cases) String() string {", + (string) (len=33) "\tif str, ok := _CasesMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _CasesValue = map[string]Cases{", + (string) (len=47) "\t_CasesName[0:10]: TestLower,", + (string) (len=47) "\tstrings.ToLower(_CasesName[0:10]): TestLower,", + (string) (len=49) "\t_CasesName[10:22]: TestCapital,", + (string) (len=49) "\tstrings.ToLower(_CasesName[10:22]): TestCapital,", + (string) (len=59) "\t_CasesName[22:43]: AnotherLowerCaseStart,", + (string) (len=59) "\tstrings.ToLower(_CasesName[22:43]): AnotherLowerCaseStart,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseCases attempts to convert a string to a Cases.", + (string) (len=45) "func ParseCases(name string) (Cases, error) {", + (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=61) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Cases) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Cases) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseCases(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=39) "func (x *Cases) Set(val string) error {", + (string) (len=26) "\tv, err := ParseCases(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=35) "func (x *Cases) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=31) "func (x *Cases) Type() string {", + (string) (len=15) "\treturn \"Cases\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=35) "\t// Black is a Color of type Black.", + (string) (len=19) "\tBlack Color = iota", + (string) (len=35) "\t// White is a Color of type White.", + (string) (len=6) "\tWhite", + (string) (len=31) "\t// Red is a Color of type Red.", + (string) (len=4) "\tRed", + (string) (len=35) "\t// Green is a Color of type Green.", + (string) (len=6) "\tGreen", + (string) (len=33) "\t// Blue is a Color of type Blue.", + (string) (len=23) "\tBlue Color = iota + 29", + (string) (len=33) "\t// Grey is a Color of type Grey.", + (string) (len=5) "\tGrey", + (string) (len=37) "\t// Yellow is a Color of type Yellow.", + (string) (len=7) "\tYellow", + (string) (len=1) ")", + (string) "", + (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", + (string) "", + (string) (len=33) "var _ColorMap = map[Color]string{", + (string) (len=25) "\tBlack: _ColorName[0:5],", + (string) (len=26) "\tWhite: _ColorName[5:10],", + (string) (len=27) "\tRed: _ColorName[10:13],", + (string) (len=27) "\tGreen: _ColorName[13:18],", + (string) (len=27) "\tBlue: _ColorName[18:22],", + (string) (len=27) "\tGrey: _ColorName[22:26],", + (string) (len=27) "\tYellow: _ColorName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Color) String() string {", + (string) (len=33) "\tif str, ok := _ColorMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _ColorValue = map[string]Color{", + (string) (len=43) "\t_ColorName[0:5]: Black,", + (string) (len=43) "\tstrings.ToLower(_ColorName[0:5]): Black,", + (string) (len=43) "\t_ColorName[5:10]: White,", + (string) (len=43) "\tstrings.ToLower(_ColorName[5:10]): White,", + (string) (len=41) "\t_ColorName[10:13]: Red,", + (string) (len=41) "\tstrings.ToLower(_ColorName[10:13]): Red,", + (string) (len=43) "\t_ColorName[13:18]: Green,", + (string) (len=43) "\tstrings.ToLower(_ColorName[13:18]): Green,", + (string) (len=42) "\t_ColorName[18:22]: Blue,", + (string) (len=42) "\tstrings.ToLower(_ColorName[18:22]): Blue,", + (string) (len=42) "\t_ColorName[22:26]: Grey,", + (string) (len=42) "\tstrings.ToLower(_ColorName[22:26]): Grey,", + (string) (len=44) "\t_ColorName[26:32]: Yellow,", + (string) (len=44) "\tstrings.ToLower(_ColorName[26:32]): Yellow,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseColor attempts to convert a string to a Color.", + (string) (len=45) "func ParseColor(name string) (Color, error) {", + (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=61) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Color) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Color) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseColor(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=39) "func (x *Color) Set(val string) error {", + (string) (len=26) "\tv, err := ParseColor(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=35) "func (x *Color) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=31) "func (x *Color) Type() string {", + (string) (len=15) "\treturn \"Color\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=46) "\t// Black is a ColorWithComment of type Black.", + (string) (len=30) "\tBlack ColorWithComment = iota", + (string) (len=46) "\t// White is a ColorWithComment of type White.", + (string) (len=6) "\tWhite", + (string) (len=42) "\t// Red is a ColorWithComment of type Red.", + (string) (len=4) "\tRed", + (string) (len=46) "\t// Green is a ColorWithComment of type Green.", + (string) (len=6) "\tGreen", + (string) (len=44) "\t// Blue is a ColorWithComment of type Blue.", + (string) (len=23) "\t// Blue starts with 33", + (string) (len=34) "\tBlue ColorWithComment = iota + 29", + (string) (len=44) "\t// Grey is a ColorWithComment of type Grey.", + (string) (len=5) "\tGrey", + (string) (len=48) "\t// Yellow is a ColorWithComment of type Yellow.", + (string) (len=7) "\tYellow", + (string) (len=1) ")", + (string) "", + (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", + (string) "", + (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", + (string) (len=36) "\tBlack: _ColorWithCommentName[0:5],", + (string) (len=37) "\tWhite: _ColorWithCommentName[5:10],", + (string) (len=38) "\tRed: _ColorWithCommentName[10:13],", + (string) (len=38) "\tGreen: _ColorWithCommentName[13:18],", + (string) (len=38) "\tBlue: _ColorWithCommentName[18:22],", + (string) (len=38) "\tGrey: _ColorWithCommentName[22:26],", + (string) (len=38) "\tYellow: _ColorWithCommentName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=43) "func (x ColorWithComment) String() string {", + (string) (len=44) "\tif str, ok := _ColorWithCommentMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", + (string) (len=54) "\t_ColorWithCommentName[0:5]: Black,", + (string) (len=54) "\tstrings.ToLower(_ColorWithCommentName[0:5]): Black,", + (string) (len=54) "\t_ColorWithCommentName[5:10]: White,", + (string) (len=54) "\tstrings.ToLower(_ColorWithCommentName[5:10]): White,", + (string) (len=52) "\t_ColorWithCommentName[10:13]: Red,", + (string) (len=52) "\tstrings.ToLower(_ColorWithCommentName[10:13]): Red,", + (string) (len=54) "\t_ColorWithCommentName[13:18]: Green,", + (string) (len=54) "\tstrings.ToLower(_ColorWithCommentName[13:18]): Green,", + (string) (len=53) "\t_ColorWithCommentName[18:22]: Blue,", + (string) (len=53) "\tstrings.ToLower(_ColorWithCommentName[18:22]): Blue,", + (string) (len=53) "\t_ColorWithCommentName[22:26]: Grey,", + (string) (len=53) "\tstrings.ToLower(_ColorWithCommentName[22:26]): Grey,", + (string) (len=55) "\t_ColorWithCommentName[26:32]: Yellow,", + (string) (len=55) "\tstrings.ToLower(_ColorWithCommentName[26:32]): Yellow,", + (string) (len=1) "}", + (string) "", + (string) (len=76) "// ParseColorWithComment attempts to convert a string to a ColorWithComment.", + (string) (len=67) "func ParseColorWithComment(name string) (ColorWithComment, error) {", + (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=83) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=57) "func (x ColorWithComment) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=61) "func (x *ColorWithComment) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=40) "\ttmp, err := ParseColorWithComment(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=50) "func (x *ColorWithComment) Set(val string) error {", + (string) (len=37) "\tv, err := ParseColorWithComment(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=46) "func (x *ColorWithComment) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=42) "func (x *ColorWithComment) Type() string {", + (string) (len=26) "\treturn \"ColorWithComment\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=47) "\t// Black is a ColorWithComment2 of type Black.", + (string) (len=31) "\tBlack ColorWithComment2 = iota", + (string) (len=47) "\t// White is a ColorWithComment2 of type White.", + (string) (len=6) "\tWhite", + (string) (len=43) "\t// Red is a ColorWithComment2 of type Red.", + (string) (len=4) "\tRed", + (string) (len=47) "\t// Green is a ColorWithComment2 of type Green.", + (string) (len=6) "\tGreen", + (string) (len=45) "\t// Blue is a ColorWithComment2 of type Blue.", + (string) (len=23) "\t// Blue starts with 33", + (string) (len=35) "\tBlue ColorWithComment2 = iota + 29", + (string) (len=45) "\t// Grey is a ColorWithComment2 of type Grey.", + (string) (len=5) "\tGrey", + (string) (len=49) "\t// Yellow is a ColorWithComment2 of type Yellow.", + (string) (len=7) "\tYellow", + (string) (len=1) ")", + (string) "", + (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", + (string) "", + (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", + (string) (len=37) "\tBlack: _ColorWithComment2Name[0:5],", + (string) (len=38) "\tWhite: _ColorWithComment2Name[5:10],", + (string) (len=39) "\tRed: _ColorWithComment2Name[10:13],", + (string) (len=39) "\tGreen: _ColorWithComment2Name[13:18],", + (string) (len=39) "\tBlue: _ColorWithComment2Name[18:22],", + (string) (len=39) "\tGrey: _ColorWithComment2Name[22:26],", + (string) (len=39) "\tYellow: _ColorWithComment2Name[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment2) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment2Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", + (string) (len=55) "\t_ColorWithComment2Name[0:5]: Black,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): Black,", + (string) (len=55) "\t_ColorWithComment2Name[5:10]: White,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment2Name[5:10]): White,", + (string) (len=53) "\t_ColorWithComment2Name[10:13]: Red,", + (string) (len=53) "\tstrings.ToLower(_ColorWithComment2Name[10:13]): Red,", + (string) (len=55) "\t_ColorWithComment2Name[13:18]: Green,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment2Name[13:18]): Green,", + (string) (len=54) "\t_ColorWithComment2Name[18:22]: Blue,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment2Name[18:22]): Blue,", + (string) (len=54) "\t_ColorWithComment2Name[22:26]: Grey,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment2Name[22:26]): Grey,", + (string) (len=56) "\t_ColorWithComment2Name[26:32]: Yellow,", + (string) (len=56) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): Yellow,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2.", + (string) (len=69) "func ParseColorWithComment2(name string) (ColorWithComment2, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=85) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment2) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment2) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment2(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=51) "func (x *ColorWithComment2) Set(val string) error {", + (string) (len=38) "\tv, err := ParseColorWithComment2(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=47) "func (x *ColorWithComment2) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=43) "func (x *ColorWithComment2) Type() string {", + (string) (len=27) "\treturn \"ColorWithComment2\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=47) "\t// Black is a ColorWithComment3 of type Black.", + (string) (len=31) "\tBlack ColorWithComment3 = iota", + (string) (len=47) "\t// White is a ColorWithComment3 of type White.", + (string) (len=6) "\tWhite", + (string) (len=43) "\t// Red is a ColorWithComment3 of type Red.", + (string) (len=4) "\tRed", + (string) (len=47) "\t// Green is a ColorWithComment3 of type Green.", + (string) (len=24) "\t// Green starts with 33", + (string) (len=36) "\tGreen ColorWithComment3 = iota + 30", + (string) (len=45) "\t// Blue is a ColorWithComment3 of type Blue.", + (string) (len=5) "\tBlue", + (string) (len=45) "\t// Grey is a ColorWithComment3 of type Grey.", + (string) (len=5) "\tGrey", + (string) (len=49) "\t// Yellow is a ColorWithComment3 of type Yellow.", + (string) (len=7) "\tYellow", + (string) (len=56) "\t// BlueGreen is a ColorWithComment3 of type Blue-Green.", + (string) (len=22) "\t// blue-green comment", + (string) (len=10) "\tBlueGreen", + (string) (len=56) "\t// RedOrange is a ColorWithComment3 of type Red-Orange.", + (string) (len=10) "\tRedOrange", + (string) (len=65) "\t// RedOrangeBlue is a ColorWithComment3 of type Red-Orange-Blue.", + (string) (len=14) "\tRedOrangeBlue", + (string) (len=1) ")", + (string) "", + (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", + (string) "", + (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", + (string) (len=44) "\tBlack: _ColorWithComment3Name[0:5],", + (string) (len=45) "\tWhite: _ColorWithComment3Name[5:10],", + (string) (len=46) "\tRed: _ColorWithComment3Name[10:13],", + (string) (len=46) "\tGreen: _ColorWithComment3Name[13:18],", + (string) (len=46) "\tBlue: _ColorWithComment3Name[18:22],", + (string) (len=46) "\tGrey: _ColorWithComment3Name[22:26],", + (string) (len=46) "\tYellow: _ColorWithComment3Name[26:32],", + (string) (len=46) "\tBlueGreen: _ColorWithComment3Name[32:42],", + (string) (len=46) "\tRedOrange: _ColorWithComment3Name[42:52],", + (string) (len=46) "\tRedOrangeBlue: _ColorWithComment3Name[52:67],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment3) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment3Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", + (string) (len=55) "\t_ColorWithComment3Name[0:5]: Black,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): Black,", + (string) (len=55) "\t_ColorWithComment3Name[5:10]: White,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment3Name[5:10]): White,", + (string) (len=53) "\t_ColorWithComment3Name[10:13]: Red,", + (string) (len=53) "\tstrings.ToLower(_ColorWithComment3Name[10:13]): Red,", + (string) (len=55) "\t_ColorWithComment3Name[13:18]: Green,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment3Name[13:18]): Green,", + (string) (len=54) "\t_ColorWithComment3Name[18:22]: Blue,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment3Name[18:22]): Blue,", + (string) (len=54) "\t_ColorWithComment3Name[22:26]: Grey,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment3Name[22:26]): Grey,", + (string) (len=56) "\t_ColorWithComment3Name[26:32]: Yellow,", + (string) (len=56) "\tstrings.ToLower(_ColorWithComment3Name[26:32]): Yellow,", + (string) (len=59) "\t_ColorWithComment3Name[32:42]: BlueGreen,", + (string) (len=59) "\tstrings.ToLower(_ColorWithComment3Name[32:42]): BlueGreen,", + (string) (len=59) "\t_ColorWithComment3Name[42:52]: RedOrange,", + (string) (len=59) "\tstrings.ToLower(_ColorWithComment3Name[42:52]): RedOrange,", + (string) (len=63) "\t_ColorWithComment3Name[52:67]: RedOrangeBlue,", + (string) (len=63) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): RedOrangeBlue,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3.", + (string) (len=69) "func ParseColorWithComment3(name string) (ColorWithComment3, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=85) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment3) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment3) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment3(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=51) "func (x *ColorWithComment3) Set(val string) error {", + (string) (len=38) "\tv, err := ParseColorWithComment3(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=47) "func (x *ColorWithComment3) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=43) "func (x *ColorWithComment3) Type() string {", + (string) (len=27) "\treturn \"ColorWithComment3\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=18) "\t// Skipped value.", + (string) (len=15) "\t// Placeholder", + (string) (len=27) "\t_ ColorWithComment4 = iota", + (string) (len=47) "\t// Black is a ColorWithComment4 of type Black.", + (string) (len=6) "\tBlack", + (string) (len=47) "\t// White is a ColorWithComment4 of type White.", + (string) (len=6) "\tWhite", + (string) (len=43) "\t// Red is a ColorWithComment4 of type Red.", + (string) (len=4) "\tRed", + (string) (len=47) "\t// Green is a ColorWithComment4 of type Green.", + (string) (len=24) "\t// Green starts with 33", + (string) (len=36) "\tGreen ColorWithComment4 = iota + 29", + (string) (len=45) "\t// Blue is a ColorWithComment4 of type Blue.", + (string) (len=5) "\tBlue", + (string) (len=45) "\t// Grey is a ColorWithComment4 of type Grey.", + (string) (len=5) "\tGrey", + (string) (len=49) "\t// Yellow is a ColorWithComment4 of type Yellow.", + (string) (len=110) "\t// Where did all the (somewhat) bad fish go? (something else that goes in parentheses at the end of the line)", + (string) (len=7) "\tYellow", + (string) (len=56) "\t// BlueGreen is a ColorWithComment4 of type Blue-Green.", + (string) (len=22) "\t// blue-green comment", + (string) (len=10) "\tBlueGreen", + (string) (len=56) "\t// RedOrange is a ColorWithComment4 of type Red-Orange.", + (string) (len=20) "\t// has a , in it!?!", + (string) (len=10) "\tRedOrange", + (string) (len=1) ")", + (string) "", + (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", + (string) "", + (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", + (string) (len=40) "\tBlack: _ColorWithComment4Name[0:5],", + (string) (len=41) "\tWhite: _ColorWithComment4Name[5:10],", + (string) (len=42) "\tRed: _ColorWithComment4Name[10:13],", + (string) (len=42) "\tGreen: _ColorWithComment4Name[13:18],", + (string) (len=42) "\tBlue: _ColorWithComment4Name[18:22],", + (string) (len=42) "\tGrey: _ColorWithComment4Name[22:26],", + (string) (len=42) "\tYellow: _ColorWithComment4Name[26:32],", + (string) (len=42) "\tBlueGreen: _ColorWithComment4Name[32:42],", + (string) (len=42) "\tRedOrange: _ColorWithComment4Name[42:52],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment4) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment4Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", + (string) (len=55) "\t_ColorWithComment4Name[0:5]: Black,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): Black,", + (string) (len=55) "\t_ColorWithComment4Name[5:10]: White,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment4Name[5:10]): White,", + (string) (len=53) "\t_ColorWithComment4Name[10:13]: Red,", + (string) (len=53) "\tstrings.ToLower(_ColorWithComment4Name[10:13]): Red,", + (string) (len=55) "\t_ColorWithComment4Name[13:18]: Green,", + (string) (len=55) "\tstrings.ToLower(_ColorWithComment4Name[13:18]): Green,", + (string) (len=54) "\t_ColorWithComment4Name[18:22]: Blue,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment4Name[18:22]): Blue,", + (string) (len=54) "\t_ColorWithComment4Name[22:26]: Grey,", + (string) (len=54) "\tstrings.ToLower(_ColorWithComment4Name[22:26]): Grey,", + (string) (len=56) "\t_ColorWithComment4Name[26:32]: Yellow,", + (string) (len=56) "\tstrings.ToLower(_ColorWithComment4Name[26:32]): Yellow,", + (string) (len=59) "\t_ColorWithComment4Name[32:42]: BlueGreen,", + (string) (len=59) "\tstrings.ToLower(_ColorWithComment4Name[32:42]): BlueGreen,", + (string) (len=59) "\t_ColorWithComment4Name[42:52]: RedOrange,", + (string) (len=59) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): RedOrange,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4.", + (string) (len=69) "func ParseColorWithComment4(name string) (ColorWithComment4, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=85) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment4) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment4) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment4(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=51) "func (x *ColorWithComment4) Set(val string) error {", + (string) (len=38) "\tv, err := ParseColorWithComment4(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=47) "func (x *ColorWithComment4) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=43) "func (x *ColorWithComment4) Type() string {", + (string) (len=27) "\treturn \"ColorWithComment4\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=43) "\t// Unknown is a Enum64bit of type Unknown.", + (string) (len=25) "\tUnknown Enum64bit = iota", + (string) (len=39) "\t// E2P15 is a Enum64bit of type E2P15.", + (string) (len=31) "\tE2P15 Enum64bit = iota + 32767", + (string) (len=39) "\t// E2P16 is a Enum64bit of type E2P16.", + (string) (len=31) "\tE2P16 Enum64bit = iota + 65534", + (string) (len=39) "\t// E2P17 is a Enum64bit of type E2P17.", + (string) (len=32) "\tE2P17 Enum64bit = iota + 131069", + (string) (len=39) "\t// E2P18 is a Enum64bit of type E2P18.", + (string) (len=32) "\tE2P18 Enum64bit = iota + 262140", + (string) (len=39) "\t// E2P19 is a Enum64bit of type E2P19.", + (string) (len=32) "\tE2P19 Enum64bit = iota + 524283", + (string) (len=39) "\t// E2P20 is a Enum64bit of type E2P20.", + (string) (len=33) "\tE2P20 Enum64bit = iota + 1048570", + (string) (len=39) "\t// E2P21 is a Enum64bit of type E2P21.", + (string) (len=33) "\tE2P21 Enum64bit = iota + 2097145", + (string) (len=39) "\t// E2P22 is a Enum64bit of type E2P22.", + (string) (len=34) "\tE2P22 Enum64bit = iota + 33554424", + (string) (len=39) "\t// E2P23 is a Enum64bit of type E2P23.", + (string) (len=34) "\tE2P23 Enum64bit = iota + 67108855", + (string) (len=39) "\t// E2P28 is a Enum64bit of type E2P28.", + (string) (len=35) "\tE2P28 Enum64bit = iota + 536870902", + (string) (len=39) "\t// E2P30 is a Enum64bit of type E2P30.", + (string) (len=36) "\tE2P30 Enum64bit = iota + 1073741813", + (string) (len=39) "\t// E2P31 is a Enum64bit of type E2P31.", + (string) (len=36) "\tE2P31 Enum64bit = iota + 2147483636", + (string) (len=39) "\t// E2P32 is a Enum64bit of type E2P32.", + (string) (len=36) "\tE2P32 Enum64bit = iota + 4294967283", + (string) (len=39) "\t// E2P33 is a Enum64bit of type E2P33.", + (string) (len=36) "\tE2P33 Enum64bit = iota + 8454967282", + (string) (len=1) ")", + (string) "", + (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", + (string) "", + (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", + (string) (len=30) "\tUnknown: _Enum64bitName[0:7],", + (string) (len=31) "\tE2P15: _Enum64bitName[7:12],", + (string) (len=32) "\tE2P16: _Enum64bitName[12:17],", + (string) (len=32) "\tE2P17: _Enum64bitName[17:22],", + (string) (len=32) "\tE2P18: _Enum64bitName[22:27],", + (string) (len=32) "\tE2P19: _Enum64bitName[27:32],", + (string) (len=32) "\tE2P20: _Enum64bitName[32:37],", + (string) (len=32) "\tE2P21: _Enum64bitName[37:42],", + (string) (len=32) "\tE2P22: _Enum64bitName[42:47],", + (string) (len=32) "\tE2P23: _Enum64bitName[47:52],", + (string) (len=32) "\tE2P28: _Enum64bitName[52:57],", + (string) (len=32) "\tE2P30: _Enum64bitName[57:62],", + (string) (len=32) "\tE2P31: _Enum64bitName[62:67],", + (string) (len=32) "\tE2P32: _Enum64bitName[67:72],", + (string) (len=32) "\tE2P33: _Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x Enum64bit) String() string {", + (string) (len=37) "\tif str, ok := _Enum64bitMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", + (string) (len=49) "\t_Enum64bitName[0:7]: Unknown,", + (string) (len=49) "\tstrings.ToLower(_Enum64bitName[0:7]): Unknown,", + (string) (len=47) "\t_Enum64bitName[7:12]: E2P15,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[7:12]): E2P15,", + (string) (len=47) "\t_Enum64bitName[12:17]: E2P16,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[12:17]): E2P16,", + (string) (len=47) "\t_Enum64bitName[17:22]: E2P17,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[17:22]): E2P17,", + (string) (len=47) "\t_Enum64bitName[22:27]: E2P18,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[22:27]): E2P18,", + (string) (len=47) "\t_Enum64bitName[27:32]: E2P19,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[27:32]): E2P19,", + (string) (len=47) "\t_Enum64bitName[32:37]: E2P20,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[32:37]): E2P20,", + (string) (len=47) "\t_Enum64bitName[37:42]: E2P21,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[37:42]): E2P21,", + (string) (len=47) "\t_Enum64bitName[42:47]: E2P22,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[42:47]): E2P22,", + (string) (len=47) "\t_Enum64bitName[47:52]: E2P23,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[47:52]): E2P23,", + (string) (len=47) "\t_Enum64bitName[52:57]: E2P28,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[52:57]): E2P28,", + (string) (len=47) "\t_Enum64bitName[57:62]: E2P30,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[57:62]): E2P30,", + (string) (len=47) "\t_Enum64bitName[62:67]: E2P31,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[62:67]): E2P31,", + (string) (len=47) "\t_Enum64bitName[67:72]: E2P32,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[67:72]): E2P32,", + (string) (len=47) "\t_Enum64bitName[72:77]: E2P33,", + (string) (len=47) "\tstrings.ToLower(_Enum64bitName[72:77]): E2P33,", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// ParseEnum64bit attempts to convert a string to a Enum64bit.", + (string) (len=53) "func ParseEnum64bit(name string) (Enum64bit, error) {", + (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=69) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=50) "func (x Enum64bit) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=54) "func (x *Enum64bit) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=33) "\ttmp, err := ParseEnum64bit(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=43) "func (x *Enum64bit) Set(val string) error {", + (string) (len=30) "\tv, err := ParseEnum64bit(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=39) "func (x *Enum64bit) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=35) "func (x *Enum64bit) Type() string {", + (string) (len=19) "\treturn \"Enum64bit\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=37) "\t// Toyota is a Model of type Toyota.", + (string) (len=20) "\tToyota Model = iota", + (string) (len=18) "\t// Skipped value.", + (string) (len=2) "\t_", + (string) (len=35) "\t// Chevy is a Model of type Chevy.", + (string) (len=6) "\tChevy", + (string) (len=18) "\t// Skipped value.", + (string) (len=2) "\t_", + (string) (len=33) "\t// Ford is a Model of type Ford.", + (string) (len=5) "\tFord", + (string) (len=1) ")", + (string) "", + (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", + (string) "", + (string) (len=33) "var _ModelMap = map[Model]string{", + (string) (len=25) "\tToyota: _ModelName[0:6],", + (string) (len=26) "\tChevy: _ModelName[6:11],", + (string) (len=27) "\tFord: _ModelName[11:15],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Model) String() string {", + (string) (len=33) "\tif str, ok := _ModelMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _ModelValue = map[string]Model{", + (string) (len=44) "\t_ModelName[0:6]: Toyota,", + (string) (len=44) "\tstrings.ToLower(_ModelName[0:6]): Toyota,", + (string) (len=43) "\t_ModelName[6:11]: Chevy,", + (string) (len=43) "\tstrings.ToLower(_ModelName[6:11]): Chevy,", + (string) (len=42) "\t_ModelName[11:15]: Ford,", + (string) (len=42) "\tstrings.ToLower(_ModelName[11:15]): Ford,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseModel attempts to convert a string to a Model.", + (string) (len=45) "func ParseModel(name string) (Model, error) {", + (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=61) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Model) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Model) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseModel(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=39) "func (x *Model) Set(val string) error {", + (string) (len=26) "\tv, err := ParseModel(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=35) "func (x *Model) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=31) "func (x *Model) Type() string {", + (string) (len=15) "\treturn \"Model\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=51) "\t// TestHyphen is a Sanitizing of type Test-Hyphen.", + (string) (len=29) "\tTestHyphen Sanitizing = iota", + (string) (len=54) "\t// XHyphenStart is a Sanitizing of type -HyphenStart.", + (string) (len=13) "\tXHyphenStart", + (string) (len=62) "\t// XUnderscoreFirst is a Sanitizing of type _underscoreFirst.", + (string) (len=17) "\tXUnderscoreFirst", + (string) (len=55) "\t// X0numberFirst is a Sanitizing of type 0numberFirst.", + (string) (len=14) "\tX0numberFirst", + (string) (len=51) "\t// X123456789a is a Sanitizing of type 123456789a.", + (string) (len=12) "\tX123456789a", + (string) (len=52) "\t// X123123Asdf is a Sanitizing of type 123123-Asdf.", + (string) (len=12) "\tX123123Asdf", + (string) (len=56) "\t// EndingHyphen is a Sanitizing of type Ending-Hyphen-.", + (string) (len=13) "\tEndingHyphen", + (string) (len=1) ")", + (string) "", + (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", + (string) "", + (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", + (string) (len=41) "\tTestHyphen: _SanitizingName[0:11],", + (string) (len=42) "\tXHyphenStart: _SanitizingName[11:23],", + (string) (len=42) "\tXUnderscoreFirst: _SanitizingName[23:39],", + (string) (len=42) "\tX0numberFirst: _SanitizingName[39:51],", + (string) (len=42) "\tX123456789a: _SanitizingName[51:61],", + (string) (len=42) "\tX123123Asdf: _SanitizingName[61:72],", + (string) (len=42) "\tEndingHyphen: _SanitizingName[72:86],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x Sanitizing) String() string {", + (string) (len=38) "\tif str, ok := _SanitizingMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", + (string) (len=53) "\t_SanitizingName[0:11]: TestHyphen,", + (string) (len=53) "\tstrings.ToLower(_SanitizingName[0:11]): TestHyphen,", + (string) (len=55) "\t_SanitizingName[11:23]: XHyphenStart,", + (string) (len=55) "\tstrings.ToLower(_SanitizingName[11:23]): XHyphenStart,", + (string) (len=59) "\t_SanitizingName[23:39]: XUnderscoreFirst,", + (string) (len=59) "\tstrings.ToLower(_SanitizingName[23:39]): XUnderscoreFirst,", + (string) (len=56) "\t_SanitizingName[39:51]: X0numberFirst,", + (string) (len=56) "\tstrings.ToLower(_SanitizingName[39:51]): X0numberFirst,", + (string) (len=54) "\t_SanitizingName[51:61]: X123456789a,", + (string) (len=54) "\tstrings.ToLower(_SanitizingName[51:61]): X123456789a,", + (string) (len=54) "\t_SanitizingName[61:72]: X123123Asdf,", + (string) (len=54) "\tstrings.ToLower(_SanitizingName[61:72]): X123123Asdf,", + (string) (len=55) "\t_SanitizingName[72:86]: EndingHyphen,", + (string) (len=55) "\tstrings.ToLower(_SanitizingName[72:86]): EndingHyphen,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseSanitizing attempts to convert a string to a Sanitizing.", + (string) (len=55) "func ParseSanitizing(name string) (Sanitizing, error) {", + (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=71) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x Sanitizing) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *Sanitizing) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=34) "\ttmp, err := ParseSanitizing(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=44) "func (x *Sanitizing) Set(val string) error {", + (string) (len=31) "\tv, err := ParseSanitizing(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=40) "func (x *Sanitizing) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=36) "func (x *Sanitizing) Type() string {", + (string) (len=20) "\treturn \"Sanitizing\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=32) "\t// Coke is a Soda of type Coke.", + (string) (len=17) "\tCoke Soda = iota", + (string) (len=34) "\t// Pepsi is a Soda of type Pepsi.", + (string) (len=6) "\tPepsi", + (string) (len=36) "\t// MtnDew is a Soda of type MtnDew.", + (string) (len=7) "\tMtnDew", + (string) (len=1) ")", + (string) "", + (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", + (string) "", + (string) (len=31) "var _SodaMap = map[Soda]string{", + (string) (len=24) "\tCoke: _SodaName[0:4],", + (string) (len=24) "\tPepsi: _SodaName[4:9],", + (string) (len=25) "\tMtnDew: _SodaName[9:15],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=31) "func (x Soda) String() string {", + (string) (len=32) "\tif str, ok := _SodaMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _SodaValue = map[string]Soda{", + (string) (len=40) "\t_SodaName[0:4]: Coke,", + (string) (len=40) "\tstrings.ToLower(_SodaName[0:4]): Coke,", + (string) (len=41) "\t_SodaName[4:9]: Pepsi,", + (string) (len=41) "\tstrings.ToLower(_SodaName[4:9]): Pepsi,", + (string) (len=42) "\t_SodaName[9:15]: MtnDew,", + (string) (len=42) "\tstrings.ToLower(_SodaName[9:15]): MtnDew,", + (string) (len=1) "}", + (string) "", + (string) (len=52) "// ParseSoda attempts to convert a string to a Soda.", + (string) (len=43) "func ParseSoda(name string) (Soda, error) {", + (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=59) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=45) "func (x Soda) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=49) "func (x *Soda) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=28) "\ttmp, err := ParseSoda(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=38) "func (x *Soda) Set(val string) error {", + (string) (len=25) "\tv, err := ParseSoda(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=34) "func (x *Soda) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=30) "func (x *Soda) Type() string {", + (string) (len=14) "\treturn \"Soda\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=56) "\t// StartWithNum is a StartNotZero of type StartWithNum.", + (string) (len=38) "\tStartWithNum StartNotZero = iota + 23", + (string) (len=46) "\t// NextNum is a StartNotZero of type NextNum.", + (string) (len=8) "\tNextNum", + (string) (len=1) ")", + (string) "", + (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", + (string) "", + (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", + (string) (len=39) "\tStartWithNum: _StartNotZeroName[0:12],", + (string) (len=40) "\tNextNum: _StartNotZeroName[12:19],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=39) "func (x StartNotZero) String() string {", + (string) (len=40) "\tif str, ok := _StartNotZeroMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", + (string) (len=57) "\t_StartNotZeroName[0:12]: StartWithNum,", + (string) (len=57) "\tstrings.ToLower(_StartNotZeroName[0:12]): StartWithNum,", + (string) (len=52) "\t_StartNotZeroName[12:19]: NextNum,", + (string) (len=52) "\tstrings.ToLower(_StartNotZeroName[12:19]): NextNum,", + (string) (len=1) "}", + (string) "", + (string) (len=68) "// ParseStartNotZero attempts to convert a string to a StartNotZero.", + (string) (len=59) "func ParseStartNotZero(name string) (StartNotZero, error) {", + (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=75) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=53) "func (x StartNotZero) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=57) "func (x *StartNotZero) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=36) "\ttmp, err := ParseStartNotZero(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=46) "func (x *StartNotZero) Set(val string) error {", + (string) (len=33) "\tv, err := ParseStartNotZero(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=42) "func (x *StartNotZero) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=38) "func (x *StartNotZero) Type() string {", + (string) (len=22) "\treturn \"StartNotZero\"", + (string) (len=1) "}", + (string) "" +} diff --git a/generator/example_1.18_test.go b/generator/example_1.18_test.go new file mode 100644 index 00000000..dbf66582 --- /dev/null +++ b/generator/example_1.18_test.go @@ -0,0 +1,22 @@ +//go:build go1.18 +// +build go1.18 + +package generator + +// SumIntsOrFloats sums the values of map m. It supports both int64 and float64 +// as types for map values. +func SumIntsOrFloats[K comparable, V int64 | float64](m map[K]V) V { + var s V + for _, v := range m { + s += v + } + return s +} + +// ChangeType is a type of change detected. +/* ENUM( + Create + Update + Delete +) */ +type ChangeType int diff --git a/generator/generator_1.18_test.go b/generator/generator_1.18_test.go new file mode 100644 index 00000000..45383188 --- /dev/null +++ b/generator/generator_1.18_test.go @@ -0,0 +1,208 @@ +//go:build go1.18 +// +build go1.18 + +package generator + +import ( + "fmt" + "go/parser" + "strings" + "testing" + + "github.com/bradleyjkemp/cupaloy" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +var ( + testExampleFiles = map[string]string{ + "og": `example_test.go`, + "1.18": `example_1.18_test.go`, + } +) + +// TestNoStructInputFile +func Test118NoStructFile(t *testing.T) { + input := `package test + // Behavior + type SomeInterface interface{ + + } + ` + g := NewGenerator(). + WithoutSnakeToCamel() + f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) + assert.Nil(t, err, "Error parsing no struct input") + + output, err := g.Generate(f) + assert.Nil(t, err, "Error generating formatted code") + if false { // Debugging statement + fmt.Println(string(output)) + } +} + +// TestNoFile +func Test118NoFile(t *testing.T) { + g := NewGenerator(). + WithoutSnakeToCamel() + // Parse the file given in arguments + _, err := g.GenerateFromFile("") + assert.NotNil(t, err, "Error generating formatted code") +} + +// TestExampleFile +func Test118ExampleFile(t *testing.T) { + g := NewGenerator(). + WithMarshal(). + WithSQLDriver(). + WithCaseInsensitiveParse(). + WithNames(). + WithoutSnakeToCamel() + + for name, testExample := range testExampleFiles { + t.Run(name, func(t *testing.T) { + // Parse the file given in arguments + imported, err := g.GenerateFromFile(testExample) + require.Nil(t, err, "Error generating formatted code") + + outputLines := strings.Split(string(imported), "\n") + cupaloy.SnapshotT(t, outputLines) + + if false { + fmt.Println(string(imported)) + } + }) + } +} + +// TestExampleFile +func Test118NoPrefixExampleFile(t *testing.T) { + g := NewGenerator(). + WithMarshal(). + WithLowercaseVariant(). + WithNoPrefix(). + WithFlag(). + WithoutSnakeToCamel() + for name, testExample := range testExampleFiles { + t.Run(name, func(t *testing.T) { + // Parse the file given in arguments + imported, err := g.GenerateFromFile(testExample) + require.Nil(t, err, "Error generating formatted code") + + outputLines := strings.Split(string(imported), "\n") + cupaloy.SnapshotT(t, outputLines) + + if false { + fmt.Println(string(imported)) + } + }) + } +} + +// TestExampleFile +func Test118NoPrefixExampleFileWithSnakeToCamel(t *testing.T) { + g := NewGenerator(). + WithMarshal(). + WithLowercaseVariant(). + WithNoPrefix(). + WithFlag() + + for name, testExample := range testExampleFiles { + t.Run(name, func(t *testing.T) { + // Parse the file given in arguments + imported, err := g.GenerateFromFile(testExample) + require.Nil(t, err, "Error generating formatted code") + + outputLines := strings.Split(string(imported), "\n") + cupaloy.SnapshotT(t, outputLines) + + if false { + fmt.Println(string(imported)) + } + }) + } +} + +// TestCustomPrefixExampleFile +func Test118CustomPrefixExampleFile(t *testing.T) { + g := NewGenerator(). + WithMarshal(). + WithLowercaseVariant(). + WithNoPrefix(). + WithFlag(). + WithoutSnakeToCamel(). + WithPtr(). + WithSQLNullInt(). + WithSQLNullStr(). + WithPrefix("Custom_prefix_") + for name, testExample := range testExampleFiles { + t.Run(name, func(t *testing.T) { + // Parse the file given in arguments + imported, err := g.GenerateFromFile(testExample) + require.Nil(t, err, "Error generating formatted code") + + outputLines := strings.Split(string(imported), "\n") + cupaloy.SnapshotT(t, outputLines) + + if false { + fmt.Println(string(imported)) + } + }) + } +} + +func Test118AliasParsing(t *testing.T) { + tests := map[string]struct { + input []string + resultingMap map[string]string + err error + }{ + "no aliases": { + resultingMap: map[string]string{}, + }, + "multiple arrays": { + input: []string{ + `!:Bang,a:a`, + `@:AT`, + `&:AND,|:OR`, + }, + resultingMap: map[string]string{ + "a": "a", + "!": "Bang", + "@": "AT", + "&": "AND", + "|": "OR", + }, + }, + "more types": { + input: []string{ + `*:star,+:PLUS`, + `-:less`, + `#:HASH,!:Bang`, + }, + resultingMap: map[string]string{ + "*": "star", + "+": "PLUS", + "-": "less", + "#": "HASH", + "!": "Bang", + }, + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + defer func() { + replacementNames = map[string]string{} + }() + err := ParseAliases(tc.input) + if tc.err != nil { + require.Error(t, err) + require.EqualError(t, err, tc.err.Error()) + } else { + require.NoError(t, err) + require.Equal(t, tc.resultingMap, replacementNames) + } + }) + } +} diff --git a/generator/generator_test.go b/generator/generator_test.go index 0e90dba4..9c20d17d 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -1,3 +1,6 @@ +//go:build !go1.18 +// +build !go1.18 + package generator import ( @@ -57,8 +60,7 @@ func TestExampleFile(t *testing.T) { require.Nil(t, err, "Error generating formatted code") outputLines := strings.Split(string(imported), "\n") - err = cupaloy.Snapshot(outputLines) - assert.NoError(t, err, "Output must match snapshot") + cupaloy.SnapshotT(t, outputLines) if false { fmt.Println(string(imported)) @@ -78,8 +80,7 @@ func TestNoPrefixExampleFile(t *testing.T) { require.Nil(t, err, "Error generating formatted code") outputLines := strings.Split(string(imported), "\n") - err = cupaloy.Snapshot(outputLines) - assert.NoError(t, err, "Output must match snapshot") + cupaloy.SnapshotT(t, outputLines) if false { fmt.Println(string(imported)) @@ -99,8 +100,7 @@ func TestNoPrefixExampleFileWithSnakeToCamel(t *testing.T) { require.Nil(t, err, "Error generating formatted code") outputLines := strings.Split(string(imported), "\n") - err = cupaloy.Snapshot(outputLines) - assert.NoError(t, err, "Output must match snapshot") + cupaloy.SnapshotT(t, outputLines) if false { fmt.Println(string(imported)) @@ -124,8 +124,7 @@ func TestCustomPrefixExampleFile(t *testing.T) { require.Nil(t, err, "Error generating formatted code") outputLines := strings.Split(string(imported), "\n") - err = cupaloy.Snapshot(outputLines) - assert.NoError(t, err, "Output must match snapshot") + cupaloy.SnapshotT(t, outputLines) if false { fmt.Println(string(imported)) diff --git a/go.mod b/go.mod index eb55689c..3410c670 100644 --- a/go.mod +++ b/go.mod @@ -1,26 +1,41 @@ module github.com/abice/go-enum -go 1.16 +go 1.18 require ( - github.com/Masterminds/goutils v1.1.1 // indirect - github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/sprig v2.22.0+incompatible github.com/bradleyjkemp/cupaloy v2.3.0+incompatible github.com/golang/mock v1.6.0 - github.com/google/uuid v1.2.0 // indirect - github.com/huandu/xstrings v1.3.2 // indirect - github.com/imdario/mergo v0.3.12 // indirect github.com/kevinburke/go-bindata v3.23.0+incompatible - github.com/kr/text v0.2.0 // indirect github.com/labstack/gommon v0.3.1 github.com/mattn/goveralls v0.0.11 - github.com/mitchellh/copystructure v1.1.2 // indirect github.com/pkg/errors v0.9.1 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.7.1 github.com/urfave/cli/v2 v2.4.0 golang.org/x/tools v0.1.10 +) + +require ( + github.com/Masterminds/goutils v1.1.1 // indirect + github.com/Masterminds/semver v1.5.0 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.1 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/google/uuid v1.2.0 // indirect + github.com/huandu/xstrings v1.3.2 // indirect + github.com/imdario/mergo v0.3.12 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/mattn/go-colorable v0.1.11 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect + github.com/mitchellh/copystructure v1.1.2 // indirect + github.com/mitchellh/reflectwalk v1.0.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect + golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect + golang.org/x/sys v0.0.0-20211103235746-7861aae1554b // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) From 2485d8f8373fccc23f5de42b4b3215ae3c9aef03 Mon Sep 17 00:00:00 2001 From: Egor Gartman Date: Thu, 12 May 2022 20:23:27 +0300 Subject: [PATCH 31/91] Add non-ASCII enum values support (#97) * Add non-ASCII enum values support * fix go1.18 tests Co-authored-by: Egor Gartman --- .../Test118CustomPrefixExampleFile-og | 264 +++++++++++++++++- generator/.snapshots/Test118ExampleFile-og | 150 +++++++++- .../.snapshots/Test118NoPrefixExampleFile-og | 77 ++++- ...t118NoPrefixExampleFileWithSnakeToCamel-og | 77 ++++- .../.snapshots/TestCustomPrefixExampleFile | 264 +++++++++++++++++- generator/.snapshots/TestExampleFile | 150 +++++++++- generator/.snapshots/TestNoPrefixExampleFile | 77 ++++- .../TestNoPrefixExampleFileWithSnakeToCamel | 77 ++++- generator/example_test.go | 8 + generator/generator.go | 35 +-- 10 files changed, 1150 insertions(+), 29 deletions(-) diff --git a/generator/.snapshots/Test118CustomPrefixExampleFile-og b/generator/.snapshots/Test118CustomPrefixExampleFile-og index e92966fa..531abf35 100644 --- a/generator/.snapshots/Test118CustomPrefixExampleFile-og +++ b/generator/.snapshots/Test118CustomPrefixExampleFile-og @@ -1,4 +1,4 @@ -([]string) (len=3377) { +([]string) (len=3639) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -2576,6 +2576,268 @@ (string) (len=1) "}", (string) "", (string) (len=7) "const (", + (string) (len=66) "\t// Custom_prefix_Продам is a NonASCII of type Продам.", + (string) (len=50) "\tCustom_prefix_Продам NonASCII = iota + 1114", + (string) (len=54) "\t// Custom_prefix_車庫 is a NonASCII of type 車庫.", + (string) (len=43) "\tCustom_prefix_車庫 NonASCII = iota + 299", + (string) (len=58) "\t// Custom_prefix_Էժան is a NonASCII of type Էժան.", + (string) (len=44) "\tCustom_prefix_Էժան NonASCII = iota + -1", + (string) (len=1) ")", + (string) "", + (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", + (string) "", + (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", + (string) (len=49) "\tCustom_prefix_Продам: _NonASCIIName[0:12],", + (string) (len=48) "\tCustom_prefix_車庫: _NonASCIIName[12:18],", + (string) (len=48) "\tCustom_prefix_Էժան: _NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=35) "func (x NonASCII) String() string {", + (string) (len=36) "\tif str, ok := _NonASCIIMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", + (string) (len=67) "\t_NonASCIIName[0:12]: Custom_prefix_Продам,", + (string) (len=67) "\tstrings.ToLower(_NonASCIIName[0:12]): Custom_prefix_Продам,", + (string) (len=61) "\t_NonASCIIName[12:18]: Custom_prefix_車庫,", + (string) (len=61) "\tstrings.ToLower(_NonASCIIName[12:18]): Custom_prefix_車庫,", + (string) (len=63) "\t_NonASCIIName[18:26]: Custom_prefix_Էժան,", + (string) (len=63) "\tstrings.ToLower(_NonASCIIName[18:26]): Custom_prefix_Էժան,", + (string) (len=1) "}", + (string) "", + (string) (len=60) "// ParseNonASCII attempts to convert a string to a NonASCII.", + (string) (len=51) "func ParseNonASCII(name string) (NonASCII, error) {", + (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=67) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "func (x NonASCII) Ptr() *NonASCII {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=49) "func (x NonASCII) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=53) "func (x *NonASCII) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=32) "\ttmp, err := ParseNonASCII(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=95) "var _NonASCIIErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=56) "func (x *NonASCII) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=18) "\t\t*x = NonASCII(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=13) "\tcase string:", + (string) (len=28) "\t\t*x, err = ParseNonASCII(v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {", + (string) (len=32) "\t\t\t\t*x, err = NonASCII(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase []byte:", + (string) (len=36) "\t\t*x, err = ParseNonASCII(string(v))", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {", + (string) (len=32) "\t\t\t\t*x, err = NonASCII(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=15) "\tcase NonASCII:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=16) "\tcase *NonASCII:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=29) "\t\t*x, err = ParseNonASCII(*v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {", + (string) (len=32) "\t\t\t\t*x, err = NonASCII(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=49) "func (x NonASCII) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=42) "func (x *NonASCII) Set(val string) error {", + (string) (len=29) "\tv, err := ParseNonASCII(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=38) "func (x *NonASCII) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=34) "func (x *NonASCII) Type() string {", + (string) (len=18) "\treturn \"NonASCII\"", + (string) (len=1) "}", + (string) "", + (string) (len=26) "type NullNonASCII struct {", + (string) (len=18) "\tNonASCII NonASCII", + (string) (len=14) "\tValid bool", + (string) (len=14) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=56) "func NewNullNonASCII(val interface{}) (x NullNonASCII) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=60) "func (x *NullNonASCII) Scan(value interface{}) (err error) {", + (string) (len=13) "\tx.Set = true", + (string) (len=18) "\tif value == nil {", + (string) (len=42) "\t\tx.NonASCII, x.Valid = NonASCII(0), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=29) "\terr = x.NonASCII.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=53) "func (x NullNonASCII) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=30) "\treturn int64(x.NonASCII), nil", + (string) (len=1) "}", + (string) "", + (string) (len=59) "// MarshalJSON correctly serializes a NullNonASCII to JSON.", + (string) (len=53) "func (n NullNonASCII) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=33) "\t\treturn json.Marshal(n.NonASCII)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=65) "// UnmarshalJSON correctly deserializes a NullNonASCII from JSON.", + (string) (len=54) "func (n *NullNonASCII) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=29) "type NullNonASCIIStr struct {", + (string) (len=13) "\tNullNonASCII", + (string) (len=1) "}", + (string) "", + (string) (len=62) "func NewNullNonASCIIStr(val interface{}) (x NullNonASCIIStr) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=56) "func (x NullNonASCIIStr) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=32) "\treturn x.NonASCII.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=59) "// MarshalJSON correctly serializes a NullNonASCII to JSON.", + (string) (len=56) "func (n NullNonASCIIStr) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=33) "\t\treturn json.Marshal(n.NonASCII)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=65) "// UnmarshalJSON correctly deserializes a NullNonASCII from JSON.", + (string) (len=57) "func (n *NullNonASCIIStr) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", (string) (len=65) "\t// Custom_prefix_TestHyphen is a Sanitizing of type Test-Hyphen.", (string) (len=43) "\tCustom_prefix_TestHyphen Sanitizing = iota", (string) (len=67) "\t// Custom_prefix_HyphenStart is a Sanitizing of type -HyphenStart.", diff --git a/generator/.snapshots/Test118ExampleFile-og b/generator/.snapshots/Test118ExampleFile-og index 66263575..559ddadf 100644 --- a/generator/.snapshots/Test118ExampleFile-og +++ b/generator/.snapshots/Test118ExampleFile-og @@ -1,4 +1,4 @@ -([]string) (len=2047) { +([]string) (len=2195) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -1585,6 +1585,154 @@ (string) (len=1) "}", (string) "", (string) (len=7) "const (", + (string) (len=60) "\t// NonASCIIПродам is a NonASCII of type Продам.", + (string) (len=44) "\tNonASCIIПродам NonASCII = iota + 1114", + (string) (len=48) "\t// NonASCII車庫 is a NonASCII of type 車庫.", + (string) (len=37) "\tNonASCII車庫 NonASCII = iota + 299", + (string) (len=52) "\t// NonASCIIԷժան is a NonASCII of type Էժան.", + (string) (len=38) "\tNonASCIIԷժան NonASCII = iota + -1", + (string) (len=1) ")", + (string) "", + (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", + (string) "", + (string) (len=30) "var _NonASCIINames = []string{", + (string) (len=21) "\t_NonASCIIName[0:12],", + (string) (len=22) "\t_NonASCIIName[12:18],", + (string) (len=22) "\t_NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=70) "// NonASCIINames returns a list of possible string values of NonASCII.", + (string) (len=31) "func NonASCIINames() []string {", + (string) (len=43) "\ttmp := make([]string, len(_NonASCIINames))", + (string) (len=26) "\tcopy(tmp, _NonASCIINames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", + (string) (len=43) "\tNonASCIIПродам: _NonASCIIName[0:12],", + (string) (len=42) "\tNonASCII車庫: _NonASCIIName[12:18],", + (string) (len=42) "\tNonASCIIԷժան: _NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=35) "func (x NonASCII) String() string {", + (string) (len=36) "\tif str, ok := _NonASCIIMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", + (string) (len=61) "\t_NonASCIIName[0:12]: NonASCIIПродам,", + (string) (len=61) "\tstrings.ToLower(_NonASCIIName[0:12]): NonASCIIПродам,", + (string) (len=55) "\t_NonASCIIName[12:18]: NonASCII車庫,", + (string) (len=55) "\tstrings.ToLower(_NonASCIIName[12:18]): NonASCII車庫,", + (string) (len=57) "\t_NonASCIIName[18:26]: NonASCIIԷժան,", + (string) (len=57) "\tstrings.ToLower(_NonASCIIName[18:26]): NonASCIIԷժան,", + (string) (len=1) "}", + (string) "", + (string) (len=60) "// ParseNonASCII attempts to convert a string to a NonASCII.", + (string) (len=51) "func ParseNonASCII(name string) (NonASCII, error) {", + (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=56) "\tif x, ok := _NonASCIIValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=113) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII, try [%s]\", name, strings.Join(_NonASCIINames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=49) "func (x NonASCII) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=53) "func (x *NonASCII) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=32) "\ttmp, err := ParseNonASCII(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=95) "var _NonASCIIErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=56) "func (x *NonASCII) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=18) "\t\t*x = NonASCII(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=13) "\tcase string:", + (string) (len=28) "\t\t*x, err = ParseNonASCII(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=36) "\t\t*x, err = ParseNonASCII(string(v))", + (string) (len=15) "\tcase NonASCII:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=16) "\tcase *NonASCII:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=29) "\t\t*x, err = ParseNonASCII(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=49) "func (x NonASCII) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", (string) (len=61) "\t// SanitizingTestHyphen is a Sanitizing of type Test-Hyphen.", (string) (len=39) "\tSanitizingTestHyphen Sanitizing = iota", (string) (len=63) "\t// SanitizingHyphenStart is a Sanitizing of type -HyphenStart.", diff --git a/generator/.snapshots/Test118NoPrefixExampleFile-og b/generator/.snapshots/Test118NoPrefixExampleFile-og index 4834ad98..c263fa4e 100644 --- a/generator/.snapshots/Test118NoPrefixExampleFile-og +++ b/generator/.snapshots/Test118NoPrefixExampleFile-og @@ -1,4 +1,4 @@ -([]string) (len=1128) { +([]string) (len=1203) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -888,6 +888,81 @@ (string) (len=1) "}", (string) "", (string) (len=7) "const (", + (string) (len=52) "\t// Продам is a NonASCII of type Продам.", + (string) (len=36) "\tПродам NonASCII = iota + 1114", + (string) (len=40) "\t// 車庫 is a NonASCII of type 車庫.", + (string) (len=29) "\t車庫 NonASCII = iota + 299", + (string) (len=44) "\t// Էժան is a NonASCII of type Էժան.", + (string) (len=30) "\tԷժան NonASCII = iota + -1", + (string) (len=1) ")", + (string) "", + (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", + (string) "", + (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", + (string) (len=35) "\tПродам: _NonASCIIName[0:12],", + (string) (len=34) "\t車庫: _NonASCIIName[12:18],", + (string) (len=34) "\tԷժան: _NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=35) "func (x NonASCII) String() string {", + (string) (len=36) "\tif str, ok := _NonASCIIMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", + (string) (len=53) "\t_NonASCIIName[0:12]: Продам,", + (string) (len=53) "\tstrings.ToLower(_NonASCIIName[0:12]): Продам,", + (string) (len=47) "\t_NonASCIIName[12:18]: 車庫,", + (string) (len=47) "\tstrings.ToLower(_NonASCIIName[12:18]): 車庫,", + (string) (len=49) "\t_NonASCIIName[18:26]: Էժան,", + (string) (len=49) "\tstrings.ToLower(_NonASCIIName[18:26]): Էժան,", + (string) (len=1) "}", + (string) "", + (string) (len=60) "// ParseNonASCII attempts to convert a string to a NonASCII.", + (string) (len=51) "func ParseNonASCII(name string) (NonASCII, error) {", + (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=67) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=49) "func (x NonASCII) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=53) "func (x *NonASCII) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=32) "\ttmp, err := ParseNonASCII(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=42) "func (x *NonASCII) Set(val string) error {", + (string) (len=29) "\tv, err := ParseNonASCII(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=38) "func (x *NonASCII) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=34) "func (x *NonASCII) Type() string {", + (string) (len=18) "\treturn \"NonASCII\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", (string) (len=51) "\t// TestHyphen is a Sanitizing of type Test-Hyphen.", (string) (len=29) "\tTestHyphen Sanitizing = iota", (string) (len=54) "\t// XHyphenStart is a Sanitizing of type -HyphenStart.", diff --git a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og index e920dd2e..59670ee8 100644 --- a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og +++ b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og @@ -1,4 +1,4 @@ -([]string) (len=1128) { +([]string) (len=1203) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -888,6 +888,81 @@ (string) (len=1) "}", (string) "", (string) (len=7) "const (", + (string) (len=52) "\t// Продам is a NonASCII of type Продам.", + (string) (len=36) "\tПродам NonASCII = iota + 1114", + (string) (len=40) "\t// 車庫 is a NonASCII of type 車庫.", + (string) (len=29) "\t車庫 NonASCII = iota + 299", + (string) (len=44) "\t// Էժան is a NonASCII of type Էժան.", + (string) (len=30) "\tԷժան NonASCII = iota + -1", + (string) (len=1) ")", + (string) "", + (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", + (string) "", + (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", + (string) (len=35) "\tПродам: _NonASCIIName[0:12],", + (string) (len=34) "\t車庫: _NonASCIIName[12:18],", + (string) (len=34) "\tԷժան: _NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=35) "func (x NonASCII) String() string {", + (string) (len=36) "\tif str, ok := _NonASCIIMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", + (string) (len=53) "\t_NonASCIIName[0:12]: Продам,", + (string) (len=53) "\tstrings.ToLower(_NonASCIIName[0:12]): Продам,", + (string) (len=47) "\t_NonASCIIName[12:18]: 車庫,", + (string) (len=47) "\tstrings.ToLower(_NonASCIIName[12:18]): 車庫,", + (string) (len=49) "\t_NonASCIIName[18:26]: Էժան,", + (string) (len=49) "\tstrings.ToLower(_NonASCIIName[18:26]): Էժան,", + (string) (len=1) "}", + (string) "", + (string) (len=60) "// ParseNonASCII attempts to convert a string to a NonASCII.", + (string) (len=51) "func ParseNonASCII(name string) (NonASCII, error) {", + (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=67) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=49) "func (x NonASCII) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=53) "func (x *NonASCII) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=32) "\ttmp, err := ParseNonASCII(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=42) "func (x *NonASCII) Set(val string) error {", + (string) (len=29) "\tv, err := ParseNonASCII(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=38) "func (x *NonASCII) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=34) "func (x *NonASCII) Type() string {", + (string) (len=18) "\treturn \"NonASCII\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", (string) (len=51) "\t// TestHyphen is a Sanitizing of type Test-Hyphen.", (string) (len=29) "\tTestHyphen Sanitizing = iota", (string) (len=54) "\t// XHyphenStart is a Sanitizing of type -HyphenStart.", diff --git a/generator/.snapshots/TestCustomPrefixExampleFile b/generator/.snapshots/TestCustomPrefixExampleFile index e92966fa..531abf35 100644 --- a/generator/.snapshots/TestCustomPrefixExampleFile +++ b/generator/.snapshots/TestCustomPrefixExampleFile @@ -1,4 +1,4 @@ -([]string) (len=3377) { +([]string) (len=3639) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -2576,6 +2576,268 @@ (string) (len=1) "}", (string) "", (string) (len=7) "const (", + (string) (len=66) "\t// Custom_prefix_Продам is a NonASCII of type Продам.", + (string) (len=50) "\tCustom_prefix_Продам NonASCII = iota + 1114", + (string) (len=54) "\t// Custom_prefix_車庫 is a NonASCII of type 車庫.", + (string) (len=43) "\tCustom_prefix_車庫 NonASCII = iota + 299", + (string) (len=58) "\t// Custom_prefix_Էժան is a NonASCII of type Էժան.", + (string) (len=44) "\tCustom_prefix_Էժան NonASCII = iota + -1", + (string) (len=1) ")", + (string) "", + (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", + (string) "", + (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", + (string) (len=49) "\tCustom_prefix_Продам: _NonASCIIName[0:12],", + (string) (len=48) "\tCustom_prefix_車庫: _NonASCIIName[12:18],", + (string) (len=48) "\tCustom_prefix_Էժան: _NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=35) "func (x NonASCII) String() string {", + (string) (len=36) "\tif str, ok := _NonASCIIMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", + (string) (len=67) "\t_NonASCIIName[0:12]: Custom_prefix_Продам,", + (string) (len=67) "\tstrings.ToLower(_NonASCIIName[0:12]): Custom_prefix_Продам,", + (string) (len=61) "\t_NonASCIIName[12:18]: Custom_prefix_車庫,", + (string) (len=61) "\tstrings.ToLower(_NonASCIIName[12:18]): Custom_prefix_車庫,", + (string) (len=63) "\t_NonASCIIName[18:26]: Custom_prefix_Էժան,", + (string) (len=63) "\tstrings.ToLower(_NonASCIIName[18:26]): Custom_prefix_Էժան,", + (string) (len=1) "}", + (string) "", + (string) (len=60) "// ParseNonASCII attempts to convert a string to a NonASCII.", + (string) (len=51) "func ParseNonASCII(name string) (NonASCII, error) {", + (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=67) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "func (x NonASCII) Ptr() *NonASCII {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=49) "func (x NonASCII) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=53) "func (x *NonASCII) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=32) "\ttmp, err := ParseNonASCII(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=95) "var _NonASCIIErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=56) "func (x *NonASCII) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=18) "\t\t*x = NonASCII(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=13) "\tcase string:", + (string) (len=28) "\t\t*x, err = ParseNonASCII(v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {", + (string) (len=32) "\t\t\t\t*x, err = NonASCII(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=13) "\tcase []byte:", + (string) (len=36) "\t\t*x, err = ParseNonASCII(string(v))", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {", + (string) (len=32) "\t\t\t\t*x, err = NonASCII(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=15) "\tcase NonASCII:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=16) "\tcase *NonASCII:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=29) "\t\t*x, err = ParseNonASCII(*v)", + (string) (len=17) "\t\tif err != nil {", + (string) (len=47) "\t\t\t// try parsing the integer value as a string", + (string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {", + (string) (len=32) "\t\t\t\t*x, err = NonASCII(val), nil", + (string) (len=4) "\t\t\t}", + (string) (len=3) "\t\t}", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=49) "func (x NonASCII) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=42) "func (x *NonASCII) Set(val string) error {", + (string) (len=29) "\tv, err := ParseNonASCII(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=38) "func (x *NonASCII) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=34) "func (x *NonASCII) Type() string {", + (string) (len=18) "\treturn \"NonASCII\"", + (string) (len=1) "}", + (string) "", + (string) (len=26) "type NullNonASCII struct {", + (string) (len=18) "\tNonASCII NonASCII", + (string) (len=14) "\tValid bool", + (string) (len=14) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=56) "func NewNullNonASCII(val interface{}) (x NullNonASCII) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=60) "func (x *NullNonASCII) Scan(value interface{}) (err error) {", + (string) (len=13) "\tx.Set = true", + (string) (len=18) "\tif value == nil {", + (string) (len=42) "\t\tx.NonASCII, x.Valid = NonASCII(0), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=29) "\terr = x.NonASCII.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=53) "func (x NullNonASCII) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=30) "\treturn int64(x.NonASCII), nil", + (string) (len=1) "}", + (string) "", + (string) (len=59) "// MarshalJSON correctly serializes a NullNonASCII to JSON.", + (string) (len=53) "func (n NullNonASCII) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=33) "\t\treturn json.Marshal(n.NonASCII)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=65) "// UnmarshalJSON correctly deserializes a NullNonASCII from JSON.", + (string) (len=54) "func (n *NullNonASCII) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=29) "type NullNonASCIIStr struct {", + (string) (len=13) "\tNullNonASCII", + (string) (len=1) "}", + (string) "", + (string) (len=62) "func NewNullNonASCIIStr(val interface{}) (x NullNonASCIIStr) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=56) "func (x NullNonASCIIStr) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=32) "\treturn x.NonASCII.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=59) "// MarshalJSON correctly serializes a NullNonASCII to JSON.", + (string) (len=56) "func (n NullNonASCIIStr) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=33) "\t\treturn json.Marshal(n.NonASCII)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=65) "// UnmarshalJSON correctly deserializes a NullNonASCII from JSON.", + (string) (len=57) "func (n *NullNonASCIIStr) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", (string) (len=65) "\t// Custom_prefix_TestHyphen is a Sanitizing of type Test-Hyphen.", (string) (len=43) "\tCustom_prefix_TestHyphen Sanitizing = iota", (string) (len=67) "\t// Custom_prefix_HyphenStart is a Sanitizing of type -HyphenStart.", diff --git a/generator/.snapshots/TestExampleFile b/generator/.snapshots/TestExampleFile index 66263575..559ddadf 100644 --- a/generator/.snapshots/TestExampleFile +++ b/generator/.snapshots/TestExampleFile @@ -1,4 +1,4 @@ -([]string) (len=2047) { +([]string) (len=2195) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -1585,6 +1585,154 @@ (string) (len=1) "}", (string) "", (string) (len=7) "const (", + (string) (len=60) "\t// NonASCIIПродам is a NonASCII of type Продам.", + (string) (len=44) "\tNonASCIIПродам NonASCII = iota + 1114", + (string) (len=48) "\t// NonASCII車庫 is a NonASCII of type 車庫.", + (string) (len=37) "\tNonASCII車庫 NonASCII = iota + 299", + (string) (len=52) "\t// NonASCIIԷժան is a NonASCII of type Էժան.", + (string) (len=38) "\tNonASCIIԷժան NonASCII = iota + -1", + (string) (len=1) ")", + (string) "", + (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", + (string) "", + (string) (len=30) "var _NonASCIINames = []string{", + (string) (len=21) "\t_NonASCIIName[0:12],", + (string) (len=22) "\t_NonASCIIName[12:18],", + (string) (len=22) "\t_NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=70) "// NonASCIINames returns a list of possible string values of NonASCII.", + (string) (len=31) "func NonASCIINames() []string {", + (string) (len=43) "\ttmp := make([]string, len(_NonASCIINames))", + (string) (len=26) "\tcopy(tmp, _NonASCIINames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", + (string) (len=43) "\tNonASCIIПродам: _NonASCIIName[0:12],", + (string) (len=42) "\tNonASCII車庫: _NonASCIIName[12:18],", + (string) (len=42) "\tNonASCIIԷժան: _NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=35) "func (x NonASCII) String() string {", + (string) (len=36) "\tif str, ok := _NonASCIIMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", + (string) (len=61) "\t_NonASCIIName[0:12]: NonASCIIПродам,", + (string) (len=61) "\tstrings.ToLower(_NonASCIIName[0:12]): NonASCIIПродам,", + (string) (len=55) "\t_NonASCIIName[12:18]: NonASCII車庫,", + (string) (len=55) "\tstrings.ToLower(_NonASCIIName[12:18]): NonASCII車庫,", + (string) (len=57) "\t_NonASCIIName[18:26]: NonASCIIԷժան,", + (string) (len=57) "\tstrings.ToLower(_NonASCIIName[18:26]): NonASCIIԷժան,", + (string) (len=1) "}", + (string) "", + (string) (len=60) "// ParseNonASCII attempts to convert a string to a NonASCII.", + (string) (len=51) "func ParseNonASCII(name string) (NonASCII, error) {", + (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=56) "\tif x, ok := _NonASCIIValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=113) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII, try [%s]\", name, strings.Join(_NonASCIINames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=49) "func (x NonASCII) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=53) "func (x *NonASCII) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=32) "\ttmp, err := ParseNonASCII(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=95) "var _NonASCIIErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=56) "func (x *NonASCII) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=18) "\t\t*x = NonASCII(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=13) "\tcase string:", + (string) (len=28) "\t\t*x, err = ParseNonASCII(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=36) "\t\t*x, err = ParseNonASCII(string(v))", + (string) (len=15) "\tcase NonASCII:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=16) "\tcase *NonASCII:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=29) "\t\t*x, err = ParseNonASCII(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=49) "func (x NonASCII) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", (string) (len=61) "\t// SanitizingTestHyphen is a Sanitizing of type Test-Hyphen.", (string) (len=39) "\tSanitizingTestHyphen Sanitizing = iota", (string) (len=63) "\t// SanitizingHyphenStart is a Sanitizing of type -HyphenStart.", diff --git a/generator/.snapshots/TestNoPrefixExampleFile b/generator/.snapshots/TestNoPrefixExampleFile index 4834ad98..c263fa4e 100644 --- a/generator/.snapshots/TestNoPrefixExampleFile +++ b/generator/.snapshots/TestNoPrefixExampleFile @@ -1,4 +1,4 @@ -([]string) (len=1128) { +([]string) (len=1203) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -888,6 +888,81 @@ (string) (len=1) "}", (string) "", (string) (len=7) "const (", + (string) (len=52) "\t// Продам is a NonASCII of type Продам.", + (string) (len=36) "\tПродам NonASCII = iota + 1114", + (string) (len=40) "\t// 車庫 is a NonASCII of type 車庫.", + (string) (len=29) "\t車庫 NonASCII = iota + 299", + (string) (len=44) "\t// Էժան is a NonASCII of type Էժան.", + (string) (len=30) "\tԷժան NonASCII = iota + -1", + (string) (len=1) ")", + (string) "", + (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", + (string) "", + (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", + (string) (len=35) "\tПродам: _NonASCIIName[0:12],", + (string) (len=34) "\t車庫: _NonASCIIName[12:18],", + (string) (len=34) "\tԷժան: _NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=35) "func (x NonASCII) String() string {", + (string) (len=36) "\tif str, ok := _NonASCIIMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", + (string) (len=53) "\t_NonASCIIName[0:12]: Продам,", + (string) (len=53) "\tstrings.ToLower(_NonASCIIName[0:12]): Продам,", + (string) (len=47) "\t_NonASCIIName[12:18]: 車庫,", + (string) (len=47) "\tstrings.ToLower(_NonASCIIName[12:18]): 車庫,", + (string) (len=49) "\t_NonASCIIName[18:26]: Էժան,", + (string) (len=49) "\tstrings.ToLower(_NonASCIIName[18:26]): Էժան,", + (string) (len=1) "}", + (string) "", + (string) (len=60) "// ParseNonASCII attempts to convert a string to a NonASCII.", + (string) (len=51) "func ParseNonASCII(name string) (NonASCII, error) {", + (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=67) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=49) "func (x NonASCII) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=53) "func (x *NonASCII) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=32) "\ttmp, err := ParseNonASCII(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=42) "func (x *NonASCII) Set(val string) error {", + (string) (len=29) "\tv, err := ParseNonASCII(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=38) "func (x *NonASCII) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=34) "func (x *NonASCII) Type() string {", + (string) (len=18) "\treturn \"NonASCII\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", (string) (len=51) "\t// TestHyphen is a Sanitizing of type Test-Hyphen.", (string) (len=29) "\tTestHyphen Sanitizing = iota", (string) (len=54) "\t// XHyphenStart is a Sanitizing of type -HyphenStart.", diff --git a/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel b/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel index e920dd2e..59670ee8 100644 --- a/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel +++ b/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel @@ -1,4 +1,4 @@ -([]string) (len=1128) { +([]string) (len=1203) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -888,6 +888,81 @@ (string) (len=1) "}", (string) "", (string) (len=7) "const (", + (string) (len=52) "\t// Продам is a NonASCII of type Продам.", + (string) (len=36) "\tПродам NonASCII = iota + 1114", + (string) (len=40) "\t// 車庫 is a NonASCII of type 車庫.", + (string) (len=29) "\t車庫 NonASCII = iota + 299", + (string) (len=44) "\t// Էժան is a NonASCII of type Էժան.", + (string) (len=30) "\tԷժան NonASCII = iota + -1", + (string) (len=1) ")", + (string) "", + (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", + (string) "", + (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", + (string) (len=35) "\tПродам: _NonASCIIName[0:12],", + (string) (len=34) "\t車庫: _NonASCIIName[12:18],", + (string) (len=34) "\tԷժան: _NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=35) "func (x NonASCII) String() string {", + (string) (len=36) "\tif str, ok := _NonASCIIMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", + (string) (len=53) "\t_NonASCIIName[0:12]: Продам,", + (string) (len=53) "\tstrings.ToLower(_NonASCIIName[0:12]): Продам,", + (string) (len=47) "\t_NonASCIIName[12:18]: 車庫,", + (string) (len=47) "\tstrings.ToLower(_NonASCIIName[12:18]): 車庫,", + (string) (len=49) "\t_NonASCIIName[18:26]: Էժան,", + (string) (len=49) "\tstrings.ToLower(_NonASCIIName[18:26]): Էժան,", + (string) (len=1) "}", + (string) "", + (string) (len=60) "// ParseNonASCII attempts to convert a string to a NonASCII.", + (string) (len=51) "func ParseNonASCII(name string) (NonASCII, error) {", + (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=67) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=49) "func (x NonASCII) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=53) "func (x *NonASCII) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=32) "\ttmp, err := ParseNonASCII(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=42) "func (x *NonASCII) Set(val string) error {", + (string) (len=29) "\tv, err := ParseNonASCII(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=38) "func (x *NonASCII) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=34) "func (x *NonASCII) Type() string {", + (string) (len=18) "\treturn \"NonASCII\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", (string) (len=51) "\t// TestHyphen is a Sanitizing of type Test-Hyphen.", (string) (len=29) "\tTestHyphen Sanitizing = iota", (string) (len=54) "\t// XHyphenStart is a Sanitizing of type -HyphenStart.", diff --git a/generator/example_test.go b/generator/example_test.go index 4dc49f76..e90e82c1 100644 --- a/generator/example_test.go +++ b/generator/example_test.go @@ -122,3 +122,11 @@ E2P33 = 8454967296 ) */ type Enum64bit uint64 + +// NonASCII +// ENUM( +// Продам = 1114 +// 車庫 = 300 +// էժան = 1 +// ) +type NonASCII int diff --git a/generator/generator.go b/generator/generator.go index a02deb0d..13e36895 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -407,39 +407,32 @@ func unescapeComment(comment string) string { // identifier = letter { letter | unicode_digit } // where letter can be unicode_letter or '_' func sanitizeValue(value string) string { - // Keep skip value holders if value == skipHolder { return skipHolder } - name := value - + replacedValue := value for k, v := range replacementNames { - name = strings.ReplaceAll(name, k, v) + replacedValue = strings.ReplaceAll(replacedValue, k, v) } - // If the start character is not a unicode letter (this check includes the case of '_') - // then we need to add an exported prefix, so tack on a 'X' at the beginning - if !(unicode.IsLetter(rune(name[0]))) { - name = `X` + name - } + nameBuilder := strings.Builder{} + nameBuilder.Grow(len(replacedValue)) - // Loop through all the runes and remove any that aren't valid. - for i := 0; i < len(name); i++ { - r := rune(name[i]) - if !(unicode.IsLetter(r) || unicode.IsNumber(r) || r == '_') { - if i < len(name) { - name = name[:i] + name[i+1:] - } else { - // At the end of the string, take off the last char - name = name[:i-1] - } - i-- + for i, r := range replacedValue { + // If the start character is not a unicode letter (this check includes the case of '_') + // then we need to add an exported prefix, so tack on a 'X' at the beginning + if i == 0 && !unicode.IsLetter(r) { + nameBuilder.WriteRune('X') + } + + if unicode.IsLetter(r) || unicode.IsNumber(r) || r == '_' { + nameBuilder.WriteRune(r) } } - return name + return nameBuilder.String() } func snakeToCamelCase(value string) string { From b8f9fa6805736480def76ee7cfb76fbe83fd96c2 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Tue, 7 Jun 2022 06:56:04 -0700 Subject: [PATCH 32/91] fix parsing (#105) * fix parsing --- Makefile | 4 ++++ example/animal.go | 2 +- generator/.snapshots/Test118CustomPrefixExampleFile-og | 2 +- generator/.snapshots/Test118ExampleFile-og | 2 +- generator/.snapshots/Test118NoPrefixExampleFile-og | 2 +- .../Test118NoPrefixExampleFileWithSnakeToCamel-og | 2 +- generator/.snapshots/TestCustomPrefixExampleFile | 2 +- generator/.snapshots/TestExampleFile | 2 +- generator/.snapshots/TestNoPrefixExampleFile | 2 +- .../.snapshots/TestNoPrefixExampleFileWithSnakeToCamel | 2 +- generator/example_test.go | 8 ++++---- generator/generator.go | 6 ++++++ 12 files changed, 23 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index 96cf2b4f..9a17b876 100644 --- a/Makefile +++ b/Makefile @@ -105,6 +105,10 @@ bin/go-bindata: go.sum generate1_15: generator/assets/assets.go generator/enum.tmpl docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:1.15 -c 'make clean $(GOBINDATA) && $(GO) generate ./generator && make clean' +.PHONY: snapshots1_18 +snapshots1_18: + docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:1.18 -c './update-snapshots.sh || true && make clean && make' + .PHONY: ci ci: docker_1.14 ci: docker_1.15 diff --git a/example/animal.go b/example/animal.go index 84799d41..02c177a0 100644 --- a/example/animal.go +++ b/example/animal.go @@ -8,5 +8,5 @@ package example // Fish // Fish++ // Fish# -// ) +// ). type Animal int32 diff --git a/generator/.snapshots/Test118CustomPrefixExampleFile-og b/generator/.snapshots/Test118CustomPrefixExampleFile-og index 531abf35..8b0acde4 100644 --- a/generator/.snapshots/Test118CustomPrefixExampleFile-og +++ b/generator/.snapshots/Test118CustomPrefixExampleFile-og @@ -833,7 +833,7 @@ (string) (len=60) "\t// Custom_prefix_Green is a ColorWithComment of type Green.", (string) (len=20) "\tCustom_prefix_Green", (string) (len=58) "\t// Custom_prefix_Blue is a ColorWithComment of type Blue.", - (string) (len=23) "\t// Blue starts with 33", + (string) (len=24) "\t// Blue starts with 33.", (string) (len=48) "\tCustom_prefix_Blue ColorWithComment = iota + 29", (string) (len=58) "\t// Custom_prefix_Grey is a ColorWithComment of type Grey.", (string) (len=19) "\tCustom_prefix_Grey", diff --git a/generator/.snapshots/Test118ExampleFile-og b/generator/.snapshots/Test118ExampleFile-og index 559ddadf..274740c9 100644 --- a/generator/.snapshots/Test118ExampleFile-og +++ b/generator/.snapshots/Test118ExampleFile-og @@ -493,7 +493,7 @@ (string) (len=62) "\t// ColorWithCommentGreen is a ColorWithComment of type Green.", (string) (len=22) "\tColorWithCommentGreen", (string) (len=60) "\t// ColorWithCommentBlue is a ColorWithComment of type Blue.", - (string) (len=23) "\t// Blue starts with 33", + (string) (len=24) "\t// Blue starts with 33.", (string) (len=50) "\tColorWithCommentBlue ColorWithComment = iota + 29", (string) (len=60) "\t// ColorWithCommentGrey is a ColorWithComment of type Grey.", (string) (len=21) "\tColorWithCommentGrey", diff --git a/generator/.snapshots/Test118NoPrefixExampleFile-og b/generator/.snapshots/Test118NoPrefixExampleFile-og index c263fa4e..5c845855 100644 --- a/generator/.snapshots/Test118NoPrefixExampleFile-og +++ b/generator/.snapshots/Test118NoPrefixExampleFile-og @@ -267,7 +267,7 @@ (string) (len=46) "\t// Green is a ColorWithComment of type Green.", (string) (len=6) "\tGreen", (string) (len=44) "\t// Blue is a ColorWithComment of type Blue.", - (string) (len=23) "\t// Blue starts with 33", + (string) (len=24) "\t// Blue starts with 33.", (string) (len=34) "\tBlue ColorWithComment = iota + 29", (string) (len=44) "\t// Grey is a ColorWithComment of type Grey.", (string) (len=5) "\tGrey", diff --git a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og index 59670ee8..f6e55067 100644 --- a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og +++ b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og @@ -267,7 +267,7 @@ (string) (len=46) "\t// Green is a ColorWithComment of type Green.", (string) (len=6) "\tGreen", (string) (len=44) "\t// Blue is a ColorWithComment of type Blue.", - (string) (len=23) "\t// Blue starts with 33", + (string) (len=24) "\t// Blue starts with 33.", (string) (len=34) "\tBlue ColorWithComment = iota + 29", (string) (len=44) "\t// Grey is a ColorWithComment of type Grey.", (string) (len=5) "\tGrey", diff --git a/generator/.snapshots/TestCustomPrefixExampleFile b/generator/.snapshots/TestCustomPrefixExampleFile index 531abf35..8b0acde4 100644 --- a/generator/.snapshots/TestCustomPrefixExampleFile +++ b/generator/.snapshots/TestCustomPrefixExampleFile @@ -833,7 +833,7 @@ (string) (len=60) "\t// Custom_prefix_Green is a ColorWithComment of type Green.", (string) (len=20) "\tCustom_prefix_Green", (string) (len=58) "\t// Custom_prefix_Blue is a ColorWithComment of type Blue.", - (string) (len=23) "\t// Blue starts with 33", + (string) (len=24) "\t// Blue starts with 33.", (string) (len=48) "\tCustom_prefix_Blue ColorWithComment = iota + 29", (string) (len=58) "\t// Custom_prefix_Grey is a ColorWithComment of type Grey.", (string) (len=19) "\tCustom_prefix_Grey", diff --git a/generator/.snapshots/TestExampleFile b/generator/.snapshots/TestExampleFile index 559ddadf..274740c9 100644 --- a/generator/.snapshots/TestExampleFile +++ b/generator/.snapshots/TestExampleFile @@ -493,7 +493,7 @@ (string) (len=62) "\t// ColorWithCommentGreen is a ColorWithComment of type Green.", (string) (len=22) "\tColorWithCommentGreen", (string) (len=60) "\t// ColorWithCommentBlue is a ColorWithComment of type Blue.", - (string) (len=23) "\t// Blue starts with 33", + (string) (len=24) "\t// Blue starts with 33.", (string) (len=50) "\tColorWithCommentBlue ColorWithComment = iota + 29", (string) (len=60) "\t// ColorWithCommentGrey is a ColorWithComment of type Grey.", (string) (len=21) "\tColorWithCommentGrey", diff --git a/generator/.snapshots/TestNoPrefixExampleFile b/generator/.snapshots/TestNoPrefixExampleFile index c263fa4e..5c845855 100644 --- a/generator/.snapshots/TestNoPrefixExampleFile +++ b/generator/.snapshots/TestNoPrefixExampleFile @@ -267,7 +267,7 @@ (string) (len=46) "\t// Green is a ColorWithComment of type Green.", (string) (len=6) "\tGreen", (string) (len=44) "\t// Blue is a ColorWithComment of type Blue.", - (string) (len=23) "\t// Blue starts with 33", + (string) (len=24) "\t// Blue starts with 33.", (string) (len=34) "\tBlue ColorWithComment = iota + 29", (string) (len=44) "\t// Grey is a ColorWithComment of type Grey.", (string) (len=5) "\tGrey", diff --git a/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel b/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel index 59670ee8..f6e55067 100644 --- a/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel +++ b/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel @@ -267,7 +267,7 @@ (string) (len=46) "\t// Green is a ColorWithComment of type Green.", (string) (len=6) "\tGreen", (string) (len=44) "\t// Blue is a ColorWithComment of type Blue.", - (string) (len=23) "\t// Blue starts with 33", + (string) (len=24) "\t// Blue starts with 33.", (string) (len=34) "\tBlue ColorWithComment = iota + 29", (string) (len=44) "\t// Grey is a ColorWithComment of type Grey.", (string) (len=5) "\tGrey", diff --git a/generator/example_test.go b/generator/example_test.go index e90e82c1..a6d4d33f 100644 --- a/generator/example_test.go +++ b/generator/example_test.go @@ -11,14 +11,14 @@ type X struct { // Blue=33 // grey= // yellow -// ) +// ). type Color int // Animal x ENUM( // Cat, // Dog, // Fish -// ) +// ) Some other line of info type Animal int32 // Model x ENUM(Toyota,_,Chevy,_,Ford) @@ -28,7 +28,7 @@ type Model int32 Coke Pepsi MtnDew -) +). */ type Soda int64 @@ -62,7 +62,7 @@ type StartNotZero int64 // ENUM( // Black, White, Red // Green -// Blue=33 // Blue starts with 33 +// Blue=33 // Blue starts with 33. // grey= // yellow // ) diff --git a/generator/generator.go b/generator/generator.go index 13e36895..c45b6bd8 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -469,6 +469,12 @@ func getEnumDeclFromComments(comments []*ast.Comment) string { enumParamLevel += paramLevel if enumParamLevel == 0 { // End ENUM Declaration + if trimmed != "" { + end := strings.Index(trimmed, ")") + if end >= 0 { + parts[len(parts)-1] = trimmed[:end] + } + } break } } From 8268238fd705b39d430e7d8682b527af8452b6ab Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Wed, 8 Jun 2022 08:43:18 -0700 Subject: [PATCH 33/91] support negative values (#107) * support negative values --- example/enum_64_bit_enum.go | 2 +- example/negative.go | 20 +++++ example/negative_enum.go | 159 ++++++++++++++++++++++++++++++++++++ generator/assets/assets.go | 6 +- generator/enum.tmpl | 7 +- generator/generator.go | 48 +++++++++-- generator/template_funcs.go | 11 +++ go.mod | 2 +- go.sum | 8 +- 9 files changed, 245 insertions(+), 18 deletions(-) create mode 100644 example/negative.go create mode 100644 example/negative_enum.go diff --git a/example/enum_64_bit_enum.go b/example/enum_64_bit_enum.go index c2cbc991..ff68c284 100644 --- a/example/enum_64_bit_enum.go +++ b/example/enum_64_bit_enum.go @@ -43,7 +43,7 @@ const ( // Enum64bitE2P33 is a Enum64bit of type E2P33. Enum64bitE2P33 Enum64bit = iota + 8454967282 // Enum64bitE2P63 is a Enum64bit of type E2P63. - Enum64bitE2P63 Enum64bit = iota + 9223372036854775792 + Enum64bitE2P63 Enum64bit = iota + 18446744073709551600 ) const _Enum64bitName = "UnknoE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33E2P63" diff --git a/example/negative.go b/example/negative.go new file mode 100644 index 00000000..60afbd51 --- /dev/null +++ b/example/negative.go @@ -0,0 +1,20 @@ +//go:generate ../bin/go-enum -f=$GOFILE --marshal --lower --ptr --mustparse + +package example + +/* ENUM( +Unknown = -1, +Good, +Bad +). +*/ +type Status int + +/* ENUM( +Unknown = -5, +Good, +Bad, +Ugly +). +*/ +type AllNegative int diff --git a/example/negative_enum.go b/example/negative_enum.go new file mode 100644 index 00000000..6f2dcb11 --- /dev/null +++ b/example/negative_enum.go @@ -0,0 +1,159 @@ +// Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example + +package example + +import ( + "fmt" + "strings" +) + +const ( + // AllNegativeUnknown is a AllNegative of type Unknown. + AllNegativeUnknown AllNegative = iota + -5 + // AllNegativeGood is a AllNegative of type Good. + AllNegativeGood + // AllNegativeBad is a AllNegative of type Bad. + AllNegativeBad + // AllNegativeUgly is a AllNegative of type Ugly. + AllNegativeUgly +) + +const _AllNegativeName = "UnknownGoodBadUgly" + +var _AllNegativeMap = map[AllNegative]string{ + AllNegativeUnknown: _AllNegativeName[0:7], + AllNegativeGood: _AllNegativeName[7:11], + AllNegativeBad: _AllNegativeName[11:14], + AllNegativeUgly: _AllNegativeName[14:18], +} + +// String implements the Stringer interface. +func (x AllNegative) String() string { + if str, ok := _AllNegativeMap[x]; ok { + return str + } + return fmt.Sprintf("AllNegative(%d)", x) +} + +var _AllNegativeValue = map[string]AllNegative{ + _AllNegativeName[0:7]: AllNegativeUnknown, + strings.ToLower(_AllNegativeName[0:7]): AllNegativeUnknown, + _AllNegativeName[7:11]: AllNegativeGood, + strings.ToLower(_AllNegativeName[7:11]): AllNegativeGood, + _AllNegativeName[11:14]: AllNegativeBad, + strings.ToLower(_AllNegativeName[11:14]): AllNegativeBad, + _AllNegativeName[14:18]: AllNegativeUgly, + strings.ToLower(_AllNegativeName[14:18]): AllNegativeUgly, +} + +// ParseAllNegative attempts to convert a string to a AllNegative. +func ParseAllNegative(name string) (AllNegative, error) { + if x, ok := _AllNegativeValue[name]; ok { + return x, nil + } + return AllNegative(0), fmt.Errorf("%s is not a valid AllNegative", name) +} + +// MustParseAllNegative converts a string to a AllNegative, and panics if is not valid. +func MustParseAllNegative(name string) AllNegative { + val, err := ParseAllNegative(name) + if err != nil { + panic(err) + } + return val +} + +func (x AllNegative) Ptr() *AllNegative { + return &x +} + +// MarshalText implements the text marshaller method. +func (x AllNegative) MarshalText() ([]byte, error) { + return []byte(x.String()), nil +} + +// UnmarshalText implements the text unmarshaller method. +func (x *AllNegative) UnmarshalText(text []byte) error { + name := string(text) + tmp, err := ParseAllNegative(name) + if err != nil { + return err + } + *x = tmp + return nil +} + +const ( + // StatusUnknown is a Status of type Unknown. + StatusUnknown Status = iota + -1 + // StatusGood is a Status of type Good. + StatusGood + // StatusBad is a Status of type Bad. + StatusBad +) + +const _StatusName = "UnknownGoodBad" + +var _StatusMap = map[Status]string{ + StatusUnknown: _StatusName[0:7], + StatusGood: _StatusName[7:11], + StatusBad: _StatusName[11:14], +} + +// String implements the Stringer interface. +func (x Status) String() string { + if str, ok := _StatusMap[x]; ok { + return str + } + return fmt.Sprintf("Status(%d)", x) +} + +var _StatusValue = map[string]Status{ + _StatusName[0:7]: StatusUnknown, + strings.ToLower(_StatusName[0:7]): StatusUnknown, + _StatusName[7:11]: StatusGood, + strings.ToLower(_StatusName[7:11]): StatusGood, + _StatusName[11:14]: StatusBad, + strings.ToLower(_StatusName[11:14]): StatusBad, +} + +// ParseStatus attempts to convert a string to a Status. +func ParseStatus(name string) (Status, error) { + if x, ok := _StatusValue[name]; ok { + return x, nil + } + return Status(0), fmt.Errorf("%s is not a valid Status", name) +} + +// MustParseStatus converts a string to a Status, and panics if is not valid. +func MustParseStatus(name string) Status { + val, err := ParseStatus(name) + if err != nil { + panic(err) + } + return val +} + +func (x Status) Ptr() *Status { + return &x +} + +// MarshalText implements the text marshaller method. +func (x Status) MarshalText() ([]byte, error) { + return []byte(x.String()), nil +} + +// UnmarshalText implements the text unmarshaller method. +func (x *Status) UnmarshalText(text []byte) error { + name := string(text) + tmp, err := ParseStatus(name) + if err != nil { + return err + } + *x = tmp + return nil +} diff --git a/generator/assets/assets.go b/generator/assets/assets.go index 792cd195..c752feea 100644 --- a/generator/assets/assets.go +++ b/generator/assets/assets.go @@ -1,6 +1,6 @@ // Code generated by go-bindata. DO NOT EDIT. // sources: -// enum.tmpl (8.662kB) +// enum.tmpl (8.705kB) package assets @@ -69,7 +69,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _enumTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x59\xdd\x8f\xdb\xb8\x11\x7f\xb6\xfe\x8a\x39\x23\x77\x27\xb9\x8e\x9c\xa2\x45\x1f\x72\xd8\x87\xcb\x47\x83\x3b\xf4\x36\x41\x37\xcd\x4b\x10\x04\xb4\x34\x5a\xf3\x56\x22\x75\x24\xa5\x95\xab\xea\x7f\x2f\x86\xa4\x64\x59\xd6\x7e\x34\xdd\xbd\xa0\xe8\x8b\x61\x8a\xc3\xe1\xfc\x66\x86\xf3\x41\xb6\xed\x53\x48\x31\xe3\x02\x61\xb9\x43\x96\xa2\x5a\x76\x5d\xb0\xd9\xc0\x4b\x99\x22\x5c\xa2\x40\xc5\x0c\xa6\xb0\xdd\xc3\xa5\x7c\x8a\xa2\x2a\xe0\xd5\x5b\x38\x7f\xfb\x1e\x5e\xbf\xfa\xe9\x7d\x4c\x94\x1f\x50\x69\x2e\xc5\x73\x68\x5b\x88\x6b\x37\x00\xc7\xe4\xef\x58\xf3\xc3\x9c\xf2\x23\x3f\xf9\xa2\xe2\x79\x0a\xaf\x98\x41\x37\xbd\xa5\x31\x0d\x47\xf3\x06\x5e\xec\x0f\xb3\xe6\xc5\x9e\xe6\x82\x92\x25\x57\xec\x12\xa1\x6d\x63\xff\x97\xbe\xf2\xa2\x94\xca\x40\x18\x00\x00\x2c\xb3\xc2\x2c\x83\x28\x68\x5b\x14\x29\x3c\xa5\xf9\x31\x54\x02\x42\x40\x13\x29\x34\x2d\xa1\xb9\x27\xf4\xf1\x9c\x15\x08\xcf\xcf\x20\xa6\x41\x6c\x47\xb4\xd8\xce\xd7\x4c\x69\x9a\x4b\x79\x62\x60\x99\x33\x6d\x64\x96\x69\x34\x4b\x78\xe6\x89\x40\x31\x71\x89\xf0\x44\xfd\x24\x52\x6c\xd6\xb4\x24\xaf\x46\xfc\x3e\xd0\x50\x13\x86\x85\xe5\x48\x3c\xde\x5a\x1e\x44\x53\xe6\x55\x72\x75\xcc\xd8\xed\xf9\x2f\xc8\xb8\xd2\x06\xba\xae\x6d\xe1\x89\x1c\x16\xe8\x6a\xeb\xb7\x70\x9c\xfb\x8d\xfd\x06\xc0\x33\xc0\xdf\x7a\x0a\x8b\x65\xf9\x79\xd9\x75\x9b\x0d\x5c\x5c\xf1\xb2\xc4\x14\xdc\x54\xdb\x62\xae\xd1\x4e\xb4\xad\x27\x7f\xa7\x30\xe3\x0d\xa6\xb4\xac\xeb\x80\x6b\x60\x34\xd9\xeb\xa8\xeb\x40\x66\x60\xf6\x25\x1e\x96\xb8\xef\xb1\x55\x79\x0f\x91\x67\xfd\xfe\x2f\x65\x51\xa0\x30\x34\x31\xde\x67\xf4\x99\xe8\xdd\x52\xb2\xe0\x4d\x92\x1c\x70\x79\xb0\xcf\xac\x5e\xc6\x92\x9d\x01\x97\x86\x39\x42\x81\xf0\x6c\xd0\x59\xd7\xc1\x1f\x60\xa4\x43\x5a\x68\x77\x74\x1a\xf0\xf4\x63\xb3\x8c\x29\x4f\xb7\xb8\x91\xdb\x93\xcf\xd6\x3e\xc4\xc0\x5a\xf0\xd8\xa8\xee\x8f\x77\x2b\x87\x38\x22\xff\x04\x83\x45\x99\xd3\x09\x58\x6a\xa3\xb8\xb8\x44\xb5\x84\xd8\xba\x7c\xcd\x14\x7c\x6e\xdb\x83\x5b\x76\xdd\x2f\xac\x84\x33\xda\xbf\x60\x25\xcf\xf6\xce\xc5\x2c\x31\x19\xd8\xae\x07\x5e\x94\x39\x92\x7e\x35\x98\x1d\xfa\xaf\xa8\x80\x0b\x83\x2a\x63\x09\xc6\x41\x56\x89\x04\xc2\x06\x8e\x99\x47\x9e\x36\x8c\xc0\x89\x02\x6d\xb0\xe0\x19\x0d\xd6\x20\xaf\x08\xdd\xa9\x38\x1f\x9b\x4f\x3f\xd0\x64\x1b\x2c\x16\x0a\x4d\xa5\x04\xd1\x07\x8b\x2e\xe8\x87\x59\x61\xe2\x8b\x52\x71\x61\xb2\x70\x79\xbc\x3e\xfc\x36\x8d\x96\x6b\x68\xa2\x60\x1e\xae\xf3\x70\x0b\xb8\x12\x47\x90\xe3\x5c\x5e\xa3\x4a\x98\xc6\x1e\xfd\x3b\xa6\x34\x1e\x2f\x07\x66\x48\xbb\xa4\x08\x09\x89\x14\x35\x2a\x03\xac\x07\x67\xa4\x75\xef\xf1\x02\xaf\x99\x19\x56\xa1\xa0\xa3\xe4\x56\x46\x10\x1e\x4f\xae\x01\x95\x92\x2a\xf2\xfa\x6a\x6e\xd0\x96\x45\xf3\x91\x18\x9d\xa8\xac\x59\x83\xe0\x79\xb0\xe8\xda\x96\x67\x10\x0b\xd9\x23\xa3\x73\xf3\x92\xfe\x73\xa1\x51\x68\x6e\x78\x8d\x50\x92\x7c\x6b\x48\x09\x80\xc6\x92\x51\xb8\x86\x5c\xca\xab\xaa\x24\x54\xa5\xc2\x1a\x85\x81\x4a\x08\x4c\x50\x6b\xa6\xf6\x90\x48\x6d\xe8\xf4\xf6\x6a\x23\x05\x0c\x9a\xe0\x19\x5c\x23\xa4\x52\x7c\x6f\x40\x20\xa6\x60\x64\x7c\x0f\x24\x6e\xb5\x8e\xdf\xcb\xbf\x11\x57\xab\xa2\xe8\x36\x68\xbd\xe3\x2f\x3c\x4a\x56\xa0\xb6\x51\xb4\xa7\x9d\xe8\xfc\x59\xb4\xb6\xde\xf3\x9a\xb4\x9b\x85\xcb\x6f\x35\xc5\x24\x21\xc9\x88\x35\xcb\x79\x0a\x53\x3b\x18\xb5\x87\x8f\xdf\xea\x4f\xcb\x35\x10\xf7\x35\xf4\x32\xfe\x2c\xb9\x08\x27\x28\xe8\x57\xaf\x61\xb9\x86\x65\x14\xf9\x50\x44\x11\xe1\x01\x25\xf2\x72\x44\xe3\x40\x67\xd3\x12\xe9\x3c\x2e\x2a\x6d\xac\x2d\x7d\xf6\xfb\xa5\xd2\x66\xce\x8d\xbd\xeb\xea\x5b\x7d\x77\x0d\x4c\xa4\x50\x32\xc1\x13\x4d\xdc\xbd\x5c\x56\x2a\xef\xd7\x37\xf0\x3f\xf6\xed\xc9\xde\x6d\xb0\xa8\x59\x6e\x3d\x9c\x1c\xe1\xa6\xe5\x91\xf5\x17\x22\xfa\xe6\x8c\xec\x6d\x3d\xc0\x0a\x13\xa2\x52\xd1\x38\x1e\xd4\x2c\x0f\xba\xa0\xcf\x18\xbd\x2e\x4a\xa3\x48\x0b\x37\x45\xa6\x77\x46\x85\x11\xac\x4e\x85\xf3\x4c\xbf\x6b\x66\x78\x16\x4c\xe9\x1d\xcb\x7b\xed\xba\xd1\x7b\x6c\xcc\x34\x46\x1a\xfa\xe6\xa9\x73\x54\x50\xa0\xd9\xc9\xf4\xe6\x38\x39\x62\x15\x46\x10\x7e\xfc\xb4\xdd\x1b\x1c\x47\x01\x2f\x95\x9b\x08\x9b\xb8\x0f\xac\x91\x3b\x0c\x2e\x62\xfd\x43\x14\x77\x88\x54\x89\x5b\x84\x5a\x4d\xa5\x3a\xe2\x17\x5a\x06\x4e\x80\xc8\x49\x46\x82\x09\x5f\xeb\x38\x6b\x5b\xa2\x28\x58\x98\xa2\xfc\x32\x0b\x7b\x9c\xa8\x5c\xc4\x5f\x35\x70\x06\xa6\x28\x07\x05\x38\xb0\x13\xbb\x48\x05\xb1\xfe\x2d\xb7\x3f\xa2\xca\x73\x2e\xcc\xf0\x5f\x1b\xd5\x75\x73\xa9\xe0\xb5\x52\xe7\x3c\x7f\x67\x14\x9c\x39\x34\x3a\x3e\xc7\xeb\x70\xe9\xaa\xad\x52\xda\xec\x66\x9d\x9e\xe7\xcb\x08\x36\x1b\x90\x02\xa1\x44\xe5\x0a\x96\x4c\x2a\xe8\x4b\xc8\x24\x67\x7a\x87\xda\xe5\xcc\x84\x89\x93\x8c\x99\x30\x21\xe6\x13\xe6\x89\xce\x89\x36\x74\x32\x0c\xe4\x6d\x17\x01\x79\xfd\x71\x56\x70\x44\x67\x07\xdd\x59\x65\x9d\xc4\x97\x41\xa9\xa4\x50\x1b\xfe\x7f\x84\x6b\x9e\xa2\xf2\x75\xa6\xcc\x40\x93\x7c\x6c\x9b\xa3\x85\xa6\x63\x4b\x95\x2a\x5e\xa3\xf2\x35\x61\xed\x6a\x4e\x66\x9c\x2b\xc9\xd2\x16\x6e\x3b\x84\x9c\x6b\x63\x75\x81\x4d\x89\x29\x47\x91\xec\x83\x85\xbe\xe6\x26\xd9\x41\x4d\xd6\x77\xe5\x57\x48\x8c\xad\xe0\x89\xcb\x3d\xe6\x2f\x7f\x7e\x7e\x83\xc8\x75\xe4\xa9\x9c\x4b\x39\x32\xe7\x4d\xf3\xce\x54\x47\x2e\xfc\x8f\xac\x4f\x01\x77\xc6\xbb\x08\x17\x45\x74\x8a\x91\x36\xea\xed\x9c\x96\xa9\x9a\x71\xea\x64\x87\x98\x48\xf4\x4e\xcd\x6b\xa8\xbd\x2f\x6b\xa3\x28\x76\xc6\x3f\x1a\xc9\xc3\x3a\xfa\xc1\x4d\x8c\x6c\x30\x96\x75\x2a\x26\xcb\xfd\x69\x5d\x2c\xc8\xb7\x17\xdd\x50\xe4\x5a\xb8\xee\x68\xdd\x0d\xd7\x9f\xb4\x3a\xfa\x4a\xb0\x0f\xfb\x3f\x28\xfc\x63\xf2\xc1\x39\xea\x83\xcb\xdc\xe9\x30\xab\x53\x1e\x84\xc4\x0b\x68\xe5\xf3\x61\xe4\xa6\x58\x10\x38\xd1\xec\x2e\xab\x7e\xeb\xea\x3e\x7b\x57\xf7\xf3\xe9\x95\xe7\xf5\x5f\xc8\x35\x61\xbd\x3a\xe2\xed\x44\x78\x0c\xee\x59\x2e\x19\xb1\xa7\x48\xf8\xab\x96\xa2\x4f\x6f\x1a\xb0\x46\xb5\x37\x3b\x5b\x01\x92\x1f\x79\x4a\x5b\x33\x98\xef\xe9\x8b\xa8\x8a\x2d\xaa\x3b\x75\xf3\x20\x5b\x3c\x8a\x66\xab\xc7\x34\x5b\xf5\xa8\x76\x5b\x1d\xc2\xe8\x97\xb2\xbf\x2d\x1a\xad\xbe\x56\xf4\x5d\x3d\x5c\xf8\xed\x82\xc5\x50\x60\x04\x37\x56\x15\xda\x15\x94\x9b\x0d\xb8\x9c\x38\x49\xf2\x2e\x5f\xba\xb9\x7b\xf5\xc6\x96\x92\xaa\xbd\x71\xa6\x9d\xa9\xf9\x0e\xc5\xde\x7a\x28\x7f\x5c\x5f\xf1\x35\xa4\xb1\xbe\x1a\x36\x23\x59\x86\x52\xcc\xff\xe9\x8b\xe5\x2c\x67\x97\x5e\xc4\x0b\x3c\x29\x47\xdf\xc8\x9c\x89\x4b\x20\x22\x5f\x63\x0c\x42\x02\xc9\x78\x5b\x89\x84\x86\xac\x39\x34\x18\x43\x2d\x5a\xdf\x5a\x73\x92\x03\x04\x43\x52\x19\x15\x9a\xae\x78\x7e\x73\xbb\x8c\x6f\xd0\x98\xb1\x26\xef\x12\xf2\x0d\x52\x25\x3f\x2a\xe1\x46\x3a\x5c\x35\x7e\xcf\xf7\x54\x49\x4e\x36\xbd\xe4\x66\x57\x6d\xe3\x44\x16\x1b\x5d\x66\x7f\xfc\xd3\xa6\xfc\x2b\x29\x72\xa2\xa3\x5b\x76\x26\xa6\x47\x37\x2e\x7e\xd7\xc9\x55\xc9\xf2\xc6\x3a\x7a\xa6\x84\x26\x3b\xda\xb2\xf7\xbc\xca\xf3\x49\xcf\xa4\x8d\xaa\x12\xd3\x52\x47\x3a\xfe\x3e\x19\x06\x8b\x0f\xb6\x9d\xa5\x33\xba\xd8\x4a\x99\xb7\xed\x66\x05\x3f\xa6\x29\x68\x59\x10\xb0\x4c\xd2\xf1\x37\x12\xae\x77\x68\x76\x54\x66\xef\xb8\xf6\x71\xe1\x9a\x69\x7b\x0f\x96\x56\x16\xd3\xa1\x8b\xa1\x91\x54\xb6\x2f\x5d\x6d\x3a\x7f\xd9\x31\xea\xd2\x16\x17\x68\x16\x8b\xd1\x9e\xd4\x32\x83\xeb\x99\xad\x02\xcf\xf1\xfa\x14\x92\xf5\xae\xe3\xea\xbb\x99\x41\x6e\x8f\x45\x13\xf7\x15\xbb\xed\x11\xf6\xa8\xd7\x70\x8d\xc0\x2f\x85\x54\xe8\x30\x58\xff\x5c\x03\x37\x70\xcd\xf3\x1c\x7e\xad\xb4\x81\x2d\x02\xf5\x09\xc2\xf5\xf8\xae\x48\xee\x2d\xe5\x9d\xe3\x3f\xed\x24\xe6\x04\xbc\x67\x37\xe1\x2f\x59\x47\x9a\x6b\x62\x3a\xb3\x67\x60\x54\x85\x07\xad\xcd\xb6\x1d\x4d\x3c\xbd\x37\x68\x62\x67\xeb\x99\x6e\x64\x0d\x19\xcb\x35\x4e\x9a\x12\x17\xb0\xa7\x8c\xe2\x83\xf4\x11\x29\xba\x67\x1a\x1e\x82\x7e\x34\xd6\x99\x8f\x3b\xc7\x89\xe8\x8b\x03\xe4\x9c\x3a\xef\x0c\x92\x3c\x83\x6f\xbc\xa0\xa3\x6e\x56\xf0\xbc\xbf\xb3\x3a\x6d\xad\x58\x92\x60\x69\xb4\x0b\xac\xb6\x95\x22\xc9\x5d\xc3\x15\x4f\xc3\xee\x44\x43\x0f\x9a\x11\x1e\x0b\xf0\x90\xc6\xa6\xd6\x9d\xc9\x6a\xce\xcd\x6e\xbd\x6e\xf9\xf9\xe2\xed\x39\x24\x52\x29\x4c\x4c\xbe\x07\x8d\x8a\xb3\x9c\xff\x93\xba\xd3\xb9\xe8\x64\x24\xd0\x8a\x1e\xa6\x98\x85\x39\x62\x3d\x7f\xfd\xe2\x9e\x78\xc8\xad\x2e\xec\x85\xc1\x92\xfe\x2e\x2d\x7c\xe1\xfd\x72\x04\x9f\x6a\xd7\xd8\xf3\x0c\xc5\xd4\x66\x63\xa5\xf8\xfb\x1c\xcf\x78\xfe\x32\x67\x02\x38\xc5\xbb\x20\x67\x4a\x16\x13\xd0\xb3\xc1\xe1\x68\x87\x70\x3b\x73\xb7\x33\x0a\x02\xc1\xa2\x66\x0a\x9a\x71\x18\x71\xe7\xf6\xf9\x99\xc3\x3b\x70\x0b\xb7\x6b\xf8\xae\x99\xde\xee\xcc\x5c\xee\xb8\x53\x2f\xdc\x31\x6f\xa2\x49\x4e\x3e\x76\x87\x63\xcf\x60\x22\xfd\x82\x4c\x45\xa6\x73\xc9\x8a\xc0\x9d\xce\xdf\x9e\x14\x2e\x8c\xba\x67\x5e\x20\x4b\x3e\x6e\x6a\x78\xa8\x03\x6e\x25\xfd\x9d\xcf\xf8\xef\x78\xb0\x2d\xbc\xff\xc7\xb3\x6d\x81\xff\xaf\x1c\xef\xa3\xd3\x7d\xe8\x21\x0e\xef\xec\xc3\x33\xe6\xf0\xd6\x3e\xf3\xee\x42\x86\x6b\x5b\x5f\xf5\x8e\x9e\xf5\x32\xa9\x12\xb4\x8f\x54\x40\x35\x6f\xef\x81\xee\xa9\xa8\xeb\x66\x2e\x86\xed\x2b\x8e\xad\x5d\x04\x2b\x06\x4e\xfe\x51\x70\x8e\xd4\xe1\x22\x83\xd9\xdb\x50\x99\x41\x29\xb5\xe6\xdb\xbc\xbf\xc2\xec\xaf\x4f\x65\x36\xff\x3c\x38\xc3\x34\x8c\xe0\xe3\xa7\x43\x09\x6f\x8a\x92\x2c\x51\xb0\x2b\x0c\xfb\xef\x6b\xc8\x71\xfe\x09\x2a\xa2\xde\x5f\x96\xfb\xd0\x5e\xc3\xcf\x52\x0c\xd6\x30\x45\x79\xb0\xc6\xd3\xb1\x11\xfe\x1d\x00\x00\xff\xff\xcd\xe3\x2a\x81\xd6\x21\x00\x00") +var _enumTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x59\x5f\x8f\xdb\xb8\x11\x7f\xb6\x3e\xc5\x9c\x90\xbb\x93\x5c\x47\x4e\xd1\xa2\x0f\x39\xec\xc3\xe5\x4f\x83\x3b\xf4\x36\x41\x37\xcd\x4b\x10\x04\x5c\x69\xb4\xe6\xad\x44\xea\x48\xca\x2b\x57\xd5\x77\x2f\x86\xa4\x64\x59\x96\x77\xb7\xe9\xee\x05\x45\x5f\x0c\x53\x1c\x0e\xe7\x37\x33\x9c\x3f\x64\xdb\x3e\x85\x0c\x73\x2e\x10\xc2\x0d\xb2\x0c\x55\xd8\x75\xc1\x7a\x0d\x2f\x65\x86\x70\x85\x02\x15\x33\x98\xc1\xe5\x0e\xae\xe4\x53\x14\x75\x09\xaf\xde\xc2\xf9\xdb\xf7\xf0\xfa\xd5\x4f\xef\x13\xa2\xfc\x80\x4a\x73\x29\x9e\x43\xdb\x42\xb2\x75\x03\x70\x4c\xfe\x8e\x5b\xbe\x9f\x53\x7e\xe4\x27\x5f\xd4\xbc\xc8\xe0\x15\x33\xe8\xa6\x2f\x69\x4c\xc3\xd1\xbc\x81\x17\xbb\xfd\xac\x79\xb1\xa3\xb9\xa0\x62\xe9\x35\xbb\x42\x68\xdb\xc4\xff\xa5\xaf\xbc\xac\xa4\x32\x10\x05\x00\x00\x61\x5e\x9a\x30\x88\x83\xb6\x45\x91\xc1\x53\x9a\x1f\x43\x25\x20\x04\x34\x95\x42\xd3\x12\x9a\x7b\x42\x1f\xcf\x59\x89\xf0\xfc\x0c\x12\x1a\x24\x76\x44\x8b\x87\xf9\xf7\xbb\x6a\x34\x6f\x47\xc3\xfc\x96\x29\x4d\x73\x19\x4f\x0d\x84\x05\xd3\x46\xe6\xb9\x46\x13\x42\xf8\x2c\xf4\x64\xa0\x98\xb8\x42\x78\xa2\x7e\x12\x19\x36\x2b\x5a\x54\xd4\x23\x8e\x1f\x68\xa8\x09\xe5\xc2\xf2\x24\x2e\x6f\x2d\x17\xa2\xa9\x8a\x3a\xbd\x3e\x64\xed\x76\xfd\x17\xe4\x5c\x69\x03\x5d\xd7\xb6\xf0\x44\x0e\x0b\xfc\x3f\xbf\xdd\x08\x82\xdf\xd7\xed\x03\x3c\x07\xfc\xcd\x7f\x73\xa0\xc3\xcf\x61\xd7\xad\xd7\x70\x71\xcd\xab\x0a\x33\x70\x53\x6d\x8b\x85\x46\x3b\xd1\xb6\x9e\xfc\x9d\xc2\x9c\x37\x98\xd1\xb2\xae\x03\xae\x81\xd1\x64\xaf\xcc\xae\x03\x99\x83\xa1\x3d\x87\x25\xee\x7b\x62\x6d\xd3\x23\xe5\x79\xbf\xff\x4b\x59\x96\x28\x0c\x4d\x8c\xf7\x19\x7d\x26\x7a\xb7\x94\x4c\x7d\x4a\x92\x3d\x2e\x8f\xfe\x99\x55\xcf\x58\xb2\x33\xe0\xd2\x30\x47\x48\x6e\xf1\x2c\x1c\x94\xd7\x75\xf0\x07\x18\x29\x93\x96\xda\x3d\x9d\x0e\xfc\x8a\xb1\x7d\xc6\x94\xc7\x9b\x9c\xe4\xf6\xe4\x33\x19\xca\x32\xb0\xa6\x3c\xb4\xae\xfb\xe3\x3d\xcc\x61\x8e\xc9\x95\xc1\x60\x59\x15\x74\x58\x42\x6d\x14\x17\x57\xa8\x42\x48\xec\xe9\xd8\x32\x05\x9f\xdb\x76\xef\xc1\x5d\xf7\x0b\xab\xe0\x8c\xf6\x2f\x59\xc5\xf3\x9d\xf3\x35\x4b\x4c\x26\xb6\xeb\x81\x97\x55\x81\xa4\x61\x0d\x66\x83\xfe\x2b\x2a\xe0\xc2\xa0\xca\x59\x8a\x49\x90\xd7\x22\x85\xa8\x81\x43\xe6\xb1\xa7\x8d\x62\x70\xa2\x40\x1b\x2c\x78\x4e\x83\x15\xc8\x6b\x42\x77\x2c\xce\xc7\xe6\xd3\x0f\x34\xd9\x06\x8b\x85\x42\x53\x2b\x41\xf4\xc1\xa2\x0b\xfa\x61\x5e\x9a\xe4\xa2\x52\x5c\x98\x3c\x0a\x0f\xd7\x47\xdf\x66\x71\xb8\x82\x26\x0e\xe6\xe1\xda\x43\xe4\x00\xd7\xe2\x00\x72\x52\xc8\x1b\x54\x29\xd3\xd8\xa3\x7f\xc7\x94\xc6\xc3\xe5\xc0\x0c\x69\x97\x14\x21\x21\x95\x62\x8b\xca\x00\xeb\xc1\x19\x69\x1d\x7c\xbc\xc0\x6b\x66\x86\x55\x24\xe8\x30\xb9\x95\x31\x44\x87\x93\x2b\x40\xa5\xa4\x8a\xbd\xbe\x9a\x13\xda\xb2\x68\x3e\x12\xa3\x23\x95\x35\x2b\x10\xbc\x08\x16\x5d\xdb\xf2\x1c\x12\x21\x7b\x64\x74\x72\x5e\xd2\x7f\x2e\x34\x0a\xcd\x0d\xdf\x22\x54\x24\xdf\x0a\x32\x02\xa0\xb1\x62\x14\xd9\xa1\x90\xf2\xba\xae\x08\x55\xa5\x70\x8b\xc2\x40\x2d\x04\xa6\xa8\x35\x53\x3b\x48\xa5\x36\x74\x7e\x7b\xb5\x91\x02\x06\x4d\xf0\x1c\x6e\x10\x32\x29\xbe\x37\x20\x10\x33\x30\x32\xb9\x07\x12\xb7\x5a\x27\xef\xe5\xdf\x88\xab\x55\x51\x7c\x1b\xb4\xde\xf1\x17\x1e\x25\x2b\x51\xdb\x70\xda\xd3\x4e\x74\xfe\x2c\x5e\x59\xef\x79\x4d\xda\xcd\xa3\xf0\x5b\x4d\x51\x49\x48\x32\xe2\x96\x15\x3c\x83\xa9\x1d\x8c\xda\xc1\xc7\x6f\xf5\xa7\x70\x05\xc4\x7d\x05\xbd\x8c\x3f\x4b\x2e\xa2\x09\x0a\xfa\xd5\x2b\x08\x57\x10\xc6\xb1\x0f\x46\x14\x11\x1e\x50\x22\x2f\x47\x3c\x0e\x75\x36\x83\x91\xce\x93\xb2\xd6\xc6\xda\xd2\x27\xca\x5f\x6a\x6d\xe6\xdc\xd8\xbb\xae\xbe\xd5\x77\x57\xc0\x44\x06\x15\x13\x3c\xd5\xc4\xdd\xcb\x65\xa5\xf2\x7e\x7d\x82\xff\xa1\x6f\x4f\xf6\x6e\x83\xc5\x96\x15\xd6\xc3\xc9\x11\x4e\x2d\x8f\xad\xbf\x10\xd1\x37\x67\x64\x6f\xeb\x01\x56\x98\x08\x95\x8a\xc7\xf1\x60\xcb\x8a\xa0\x0b\xfa\x9c\xd1\xeb\xa2\x32\x8a\xb4\x70\x2a\x32\xbd\x33\x2a\x8a\x61\x79\x2c\x9c\x67\xfa\x5d\x33\xc3\xb3\x64\x4a\x6f\x58\xd1\x6b\xd7\x8d\xde\x63\x63\xa6\x31\xd2\xd0\x37\x4f\x5d\xa0\x82\x12\xcd\x46\x66\xa7\xe3\xe4\x88\x55\x14\x43\xf4\xf1\xd3\xe5\xce\xe0\x38\x0a\x78\xa9\xdc\x44\xd4\x24\x7d\x60\x8d\xdd\x61\x70\x11\xeb\x1f\xa2\xbc\x43\xa4\x5a\xdc\x22\xd4\x72\x2a\xd5\x01\xbf\xc8\x32\x70\x02\xc4\x4e\x32\x12\x4c\xf8\xb2\xc8\x59\xdb\x12\xc5\xc1\xc2\x94\xd5\x97\x59\xd8\xe3\x44\xe5\x22\xfe\xb2\x81\x33\x30\x65\x35\x28\xc0\x81\x9d\xd8\x45\x2a\x48\xf4\x6f\x85\xfd\x11\x75\x51\x70\x61\x86\xff\xda\xa8\xae\x9b\x4b\x05\xaf\x95\x3a\xe7\xc5\x3b\xa3\xe0\xcc\xa1\xd1\xc9\x39\xde\x44\xa1\x2b\x7f\x2a\x69\xb3\x9b\x75\x7a\x5e\x84\x31\xac\xd7\x20\x05\x42\x85\xca\x95\x2c\xb9\x54\xd0\x57\x9b\x69\xc1\xf4\x06\xb5\xcb\x99\x29\x13\x47\x19\x33\x65\x42\xcc\x27\xcc\x23\x9d\x13\x6d\xe4\x64\x18\xc8\xdb\x2e\x06\xf2\xfa\xc3\xac\xe0\x88\xce\xf6\xba\xb3\xca\x3a\x8a\x2f\x83\x52\x49\xa1\x36\xfc\xff\x08\x37\x3c\x43\xe5\x0b\x4e\x99\x83\x26\xf9\xd8\x65\x81\x16\x9a\x4e\x2c\x55\xa6\xf8\x16\x95\x2b\x3b\xdd\x5e\x1a\x98\x71\xae\x24\x2b\x5b\xba\x6d\x10\x0a\xae\x8d\xd5\x05\x36\x15\x66\x1c\x45\xba\x0b\x16\xfa\x86\x9b\x74\x03\x5b\xb2\xbe\x2b\xc0\x22\x62\x6c\x05\x4f\x5d\xee\x31\x7f\xf9\xf3\xf3\x13\x22\x6f\x63\x4f\xe5\x5c\xca\x91\x39\x6f\x9a\x77\xa6\x6d\xec\xc2\xff\xc8\xfa\x14\x70\x67\xbc\x8b\x70\x51\x44\xa7\x18\x69\xa3\xde\xc6\x69\x99\xaa\x19\xa7\x4e\xb6\x8f\x89\x44\xef\xd4\xbc\x82\xad\xf7\x65\x6d\x14\xc5\xce\xe4\x47\x23\x79\xb4\x8d\x7f\x70\x13\x23\x1b\x8c\x65\x9d\x8a\xc9\x0a\x7f\x5a\x17\x0b\xf2\xed\x45\x37\x94\xb9\x16\xae\x3b\x5a\x77\xc3\xf5\x27\x6d\x1b\x7f\x25\xd8\xfb\xfd\x1f\x14\xfe\x21\xf9\xe0\x1c\xdb\xbd\xcb\xdc\xe9\x30\xcb\x63\x1e\x84\xc4\x0b\x68\xe5\xf3\x61\xe4\x54\x2c\x08\x9c\x68\x76\x97\x65\xbf\x75\x7d\x9f\xbd\xeb\xfb\xf9\xf4\xd2\xf3\xfa\x2f\xe4\x9a\xb0\x5e\x1e\xf0\x76\x22\x3c\x06\xf7\xbc\x90\x8c\xd8\x53\x24\xfc\x55\x4b\xd1\xa7\x37\x0d\xb8\x45\xb5\x33\x1b\x5b\x01\x92\x1f\x79\x4a\x5b\x33\x98\xef\xe9\x8b\xa8\xcb\x4b\x54\x77\xea\xe6\x41\xb6\x78\x14\xcd\xd6\x8f\x69\xb6\xfa\x51\xed\xb6\xdc\x87\xd1\x2f\x65\x7f\x5b\x34\x5a\x7e\xad\xe8\xbb\x7c\xb8\xf0\xdb\x05\x8b\xa1\xc0\x08\x4e\x56\x15\xda\x15\x94\xeb\x35\xb8\x9c\x38\x49\xf2\x2e\x5f\xba\xb9\x7b\xf5\xc6\x96\x92\xaa\xbd\x71\xa6\x9d\xa9\xf9\xf6\xc5\xde\x6a\x28\x7f\x5c\x5f\xf1\x35\xa4\xb1\xbe\x1a\x35\x23\x59\x86\x52\xcc\xff\xe9\x8b\xe5\xbc\x60\x57\x5e\xc4\x0b\x3c\x2a\x47\xdf\xc8\x82\x89\x2b\x20\x22\x5f\x63\x0c\x42\x02\xc9\x78\x5b\x89\x84\x86\xac\x39\x34\x18\x43\x2d\xba\xbd\xb5\xe6\x24\x07\x08\x86\xa4\x32\x2a\x34\x5d\xf1\xfc\xe6\x76\x19\xdf\xa0\x31\x63\x4d\xde\x25\xe4\x1b\xa4\x4a\x7e\x54\xc2\x8d\x74\xb8\x6c\xfc\x9e\xf6\xc2\x6d\xb2\xe9\x15\x37\x9b\xfa\x32\x49\x65\xb9\xd6\x55\xfe\xc7\x3f\xad\xab\xbf\x92\x22\x27\x3a\xba\x65\x67\x62\x7a\x70\xe3\xe2\x77\x9d\x5c\x95\x84\x27\xeb\xe8\x99\x12\x9a\xec\x68\xcb\xde\xf3\xba\x28\x26\x3d\x93\x36\xaa\x4e\x4d\x4b\x1d\xe9\xf8\xfb\x64\x18\x2c\x3e\xd8\x76\x96\xce\xe8\xe2\x52\xca\xa2\x6d\xd7\x4b\xf8\x31\xcb\x40\xcb\x92\x80\xe5\x92\x8e\xbf\x91\x70\xb3\x41\xb3\xa1\x32\x7b\xc3\xb5\x8f\x0b\x37\x4c\xdb\x7b\xb0\xac\xb6\x98\xf6\x5d\x0c\x8d\xa4\xb2\x7d\xe9\x72\xdd\xf9\xcb\x8e\x51\x97\xb6\xb8\x40\xb3\x58\x8c\xf6\xa4\x96\x19\x5c\xcf\x6c\x15\x78\x8e\x37\xc7\x90\xac\x77\x1d\x56\xdf\xcd\x0c\x72\x7b\x2c\x9a\xa4\xaf\xd8\x6d\x8f\xb0\x43\xbd\x82\x1b\x04\x7e\x25\xa4\x42\x87\xc1\xfa\xe7\x0a\xb8\x81\x1b\x5e\x14\xf0\x6b\xad\x0d\x5c\x22\x50\x9f\x20\x5c\x8f\xef\x8a\xe4\xde\x52\xde\x39\xfe\xd3\x4e\x62\x4e\xc0\x7b\x76\x13\xfe\x9a\x75\xa4\xb9\x26\xa1\x33\x7b\x06\x46\xd5\xb8\xd7\xda\x6c\xdb\xd1\x24\xd3\x7b\x83\x26\x71\xb6\x9e\xe9\x46\x56\x90\xb3\x42\xe3\xa4\x29\x71\x01\x7b\xca\x28\xd9\x4b\x1f\x93\xa2\x7b\xa6\xd1\x3e\xe8\xc7\x63\x9d\xf9\xb8\x73\x98\x88\xbe\x38\x40\xce\xa9\xf3\xce\x20\xc9\x73\xf8\xc6\x0b\x3a\xea\x66\x05\x2f\xfa\x3b\xab\xe3\xd6\x8a\xa5\x29\x56\x46\xbb\xc0\x6a\x5b\x29\x92\xdc\x35\x5c\xc9\x34\xec\x4e\x34\xf4\xa0\x19\xe1\xb1\x00\x0f\x69\x6c\x6a\xdd\x99\xac\xe6\xdc\xec\xd6\xeb\x96\x9f\x2f\xde\x9e\x43\x2a\x95\xc2\xd4\x14\x3b\xd0\xa8\x38\x2b\xf8\x3f\xa9\x3b\x9d\x8b\x4e\x46\x02\xad\xe8\x61\x8a\x59\x98\x23\xd6\xf3\xd7\x2f\xee\x35\x88\xdc\xea\xc2\x5e\x18\x84\xf4\x37\xb4\xf0\x85\xf7\xcb\x11\x7c\xaa\x5d\x13\xcf\x33\x12\x53\x9b\x8d\x95\xe2\xef\x73\x3c\xe3\xf9\xcb\x9c\x09\xe0\x0c\xef\x82\x9c\x2b\x59\x4e\x40\xcf\x06\x87\x83\x1d\xa2\xcb\x99\xbb\x9d\x51\x10\x08\x16\x5b\xa6\xa0\x19\x87\x11\x77\x6e\x9f\x9f\x39\xbc\x03\xb7\xe8\x72\x05\xdf\x35\xd3\xdb\x9d\x99\xcb\x1d\x77\xea\x85\x3b\xe6\x4d\x3c\xc9\xc9\x87\xee\x70\xe8\x19\x4c\x64\x5f\x90\xa9\xc8\x74\x2e\x59\x11\xb8\xe3\xf9\xdb\x93\xc2\x85\x51\xf7\xcc\x0b\x64\xc9\xc7\x4d\x0d\x0f\x75\xc0\xad\xa4\xbf\xf3\x19\xff\x1d\x0f\xb6\x85\xf7\xff\x78\xb6\x2d\xf0\xff\x95\xe3\x7d\x70\xba\xf7\x3d\xc4\xfe\x49\x7e\x78\xc6\x1c\x9e\xe5\x67\xde\x5d\xc8\x70\x6d\xeb\xab\xde\xd1\xb3\x5e\x2e\x55\x8a\xf6\x91\x0a\xa8\xe6\xed\x3d\xd0\x3d\x15\x75\xdd\xcc\xc5\xb0\x7d\xc5\xb1\xb5\x8b\x60\xe5\xc0\xc9\x3f\x0a\xce\x91\x3a\x5c\x64\x30\x7b\x1b\x2a\x73\xa8\xa4\xd6\xfc\xb2\xe8\xaf\x30\xfb\xeb\x53\x99\xcf\x3f\x0f\xce\x30\x8d\x62\xf8\xf8\x69\x5f\xc2\x9b\xb2\x22\x4b\x94\xec\x1a\xa3\xfe\xfb\x0a\x0a\x9c\x7f\x82\x8a\xa9\xf7\x97\xd5\x2e\xb2\xd7\xf0\xb3\x14\x83\x35\x4c\x59\xed\xad\xf1\x74\x6c\x84\x7f\x07\x00\x00\xff\xff\x49\x18\xa5\x7f\x01\x22\x00\x00") func enumTmplBytes() ([]byte, error) { return bindataRead( @@ -85,7 +85,7 @@ func enumTmpl() (*asset, error) { } info := bindataFileInfo{name: "enum.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa1, 0xda, 0x31, 0x38, 0xe3, 0x6, 0x16, 0x85, 0x81, 0x26, 0x17, 0x21, 0x76, 0xbc, 0x9, 0x22, 0x2, 0x71, 0x8c, 0xb8, 0xcf, 0xe2, 0x8, 0x8f, 0xa2, 0x22, 0xda, 0x1e, 0xad, 0x8f, 0xa8, 0xc4}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfa, 0x4f, 0xe4, 0xcd, 0x99, 0xc, 0x30, 0x87, 0x37, 0xd9, 0xe9, 0x1f, 0x3d, 0xf9, 0xb6, 0xc9, 0x71, 0x22, 0xdd, 0x20, 0xd9, 0x4c, 0x11, 0x45, 0x79, 0xeb, 0xe7, 0xb1, 0x73, 0x2f, 0xb, 0x36}} return a, nil } diff --git a/generator/enum.tmpl b/generator/enum.tmpl index 4ac6c304..07ace7ab 100644 --- a/generator/enum.tmpl +++ b/generator/enum.tmpl @@ -15,14 +15,15 @@ import ( {{- define "enum"}} const ( {{- $enumName := .enum.Name -}} -{{- $vars := dict "lastoffset" 0 -}} +{{- $enumType := .enum.Type -}} +{{- $vars := dict "lastoffset" "0" -}} {{ range $rIndex, $value := .enum.Values }} - {{- $lastOffset := pluck "lastoffset" $vars | first }}{{ $offset := sub $value.Value $rIndex }} + {{- $lastOffset := pluck "lastoffset" $vars | first }}{{ $offset := offset $rIndex $enumType $value }} {{ if eq $value.Name "_"}}// Skipped value.{{else}}// {{$value.PrefixedName}} is a {{$enumName}} of type {{$value.Name}}.{{end}} {{- if $value.Comment}} // {{$value.Comment}} {{- end}} - {{$value.PrefixedName}} {{ if eq $rIndex 0 }}{{$enumName}} = iota{{ if ne 0 $offset }} + {{ $offset }}{{end}}{{else if ne $lastOffset $offset }}{{$enumName}} = iota + {{ $offset }}{{end}}{{$_ := set $vars "lastoffset" $offset}} + {{$value.PrefixedName}} {{ if eq $rIndex 0 }}{{$enumName}} = iota{{ if ne "0" $offset }} + {{ $offset }}{{end}}{{else if ne $lastOffset $offset }}{{$enumName}} = iota + {{ $offset }}{{end}}{{$_ := set $vars "lastoffset" $offset}} {{- end}} ) diff --git a/generator/generator.go b/generator/generator.go index c45b6bd8..5bfc341d 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -66,7 +66,7 @@ type EnumValue struct { RawName string Name string PrefixedName string - Value uint64 + Value interface{} Comment string } @@ -91,6 +91,7 @@ func NewGenerator() *Generator { funcs["mapify"] = Mapify funcs["unmapify"] = Unmapify funcs["namify"] = Namify + funcs["offset"] = Offset g.t.Funcs(funcs) @@ -339,7 +340,16 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { enumDecl := getEnumDeclFromComments(ts.Doc.List) values := strings.Split(strings.TrimSuffix(strings.TrimPrefix(enumDecl, `ENUM(`), `)`), `,`) - var data uint64 + var ( + data interface{} + unsigned bool + ) + if strings.HasPrefix(enum.Type, "u") { + data = uint64(0) + unsigned = true + } else { + data = int64(0) + } for _, value := range values { var comment string @@ -359,13 +369,23 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { equalIndex := strings.Index(value, `=`) dataVal := strings.TrimSpace(value[equalIndex+1:]) if dataVal != "" { - newData, err := strconv.ParseUint(dataVal, 10, 64) - if err != nil { - err = errors.Wrapf(err, "failed parsing the data part of enum value '%s'", value) - fmt.Println(err) - return nil, err + if unsigned { + newData, err := strconv.ParseUint(dataVal, 10, 64) + if err != nil { + err = errors.Wrapf(err, "failed parsing the data part of enum value '%s'", value) + fmt.Println(err) + return nil, err + } + data = newData + } else { + newData, err := strconv.ParseInt(dataVal, 10, 64) + if err != nil { + err = errors.Wrapf(err, "failed parsing the data part of enum value '%s'", value) + fmt.Println(err) + return nil, err + } + data = newData } - data = newData value = value[:equalIndex] } else { value = strings.TrimSuffix(value, `=`) @@ -385,7 +405,7 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { ev := EnumValue{Name: name, RawName: rawName, PrefixedName: prefixedName, Value: data, Comment: comment} enum.Values = append(enum.Values, ev) - data++ + data = increment(data) } } @@ -394,6 +414,16 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { return enum, nil } +func increment(d interface{}) interface{} { + switch d.(type) { + case uint64: + return d.(uint64) + 1 + case int64: + return d.(int64) + 1 + } + return d +} + func unescapeComment(comment string) string { val, err := url.QueryUnescape(comment) if err != nil { diff --git a/generator/template_funcs.go b/generator/template_funcs.go index 359c5b45..dfec2238 100644 --- a/generator/template_funcs.go +++ b/generator/template_funcs.go @@ -2,6 +2,7 @@ package generator import ( "fmt" + "strconv" "strings" ) @@ -69,3 +70,13 @@ func Namify(e Enum) (ret string, err error) { ret = ret + "}" return } + +func Offset(index int, enumType string, val EnumValue) (strResult string) { + if strings.HasPrefix(enumType, "u") { + // Unsigned + return strconv.FormatUint(val.Value.(uint64)-uint64(index), 10) + } else { + // Signed + return strconv.FormatInt(val.Value.(int64)-int64(index), 10) + } +} diff --git a/go.mod b/go.mod index 3410c670..c8a3e904 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/google/uuid v1.2.0 // indirect github.com/huandu/xstrings v1.3.2 // indirect github.com/imdario/mergo v0.3.12 // indirect - github.com/kr/text v0.2.0 // indirect + github.com/kr/pretty v0.3.0 // indirect github.com/mattn/go-colorable v0.1.11 // indirect github.com/mattn/go-isatty v0.0.14 // indirect github.com/mitchellh/copystructure v1.1.2 // indirect diff --git a/go.sum b/go.sum index 01c10508..bb4398ef 100644 --- a/go.sum +++ b/go.sum @@ -23,8 +23,10 @@ github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/kevinburke/go-bindata v3.23.0+incompatible h1:rqNOXZlqrYhMVVAsQx8wuc+LaA73YcfbQ407wAykyS8= github.com/kevinburke/go-bindata v3.23.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -45,6 +47,8 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -100,8 +104,10 @@ golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= From e94287eeb77afc76c924dd65c87f9ccf3bbcdbcf Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Wed, 8 Jun 2022 10:38:42 -0700 Subject: [PATCH 34/91] bump dependencies, and simply increment (#108) --- generator/generator.go | 6 +++--- go.mod | 8 ++++---- go.sum | 16 +++++++++------- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/generator/generator.go b/generator/generator.go index 5bfc341d..7a2af17a 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -415,11 +415,11 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { } func increment(d interface{}) interface{} { - switch d.(type) { + switch v := d.(type) { case uint64: - return d.(uint64) + 1 + return v + 1 case int64: - return d.(int64) + 1 + return v + 1 } return d } diff --git a/go.mod b/go.mod index c8a3e904..32df209e 100644 --- a/go.mod +++ b/go.mod @@ -11,8 +11,8 @@ require ( github.com/mattn/goveralls v0.0.11 github.com/pkg/errors v0.9.1 github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.7.1 - github.com/urfave/cli/v2 v2.4.0 + github.com/stretchr/testify v1.7.2 + github.com/urfave/cli/v2 v2.8.1 golang.org/x/tools v0.1.10 ) @@ -31,11 +31,11 @@ require ( github.com/mitchellh/reflectwalk v1.0.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect golang.org/x/sys v0.0.0-20211103235746-7861aae1554b // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index bb4398ef..f0360036 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,4 @@ -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= @@ -55,12 +55,14 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/urfave/cli/v2 v2.4.0 h1:m2pxjjDFgDxSPtO8WSdbndj17Wu2y8vOT86wE/tjr+I= -github.com/urfave/cli/v2 v2.4.0/go.mod h1:NX9W0zmTvedE5oDoOMs2RTC8RvdK98NTYZE5LbaEYPg= +github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/urfave/cli/v2 v2.8.1 h1:CGuYNZF9IKZY/rfBe3lJpccSoIY1ytfvmgQT90cNOl4= +github.com/urfave/cli/v2 v2.8.1/go.mod h1:Z41J9TPoffeoqP0Iza0YbAhGvymRdZAd2uPmZ5JxRdY= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -108,10 +110,10 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 95d64ebbc02f190c4c2c0eff5ed7ffc47e316807 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Wed, 8 Jun 2022 12:38:15 -0700 Subject: [PATCH 35/91] add more test coverage (#109) --- example/color_test.go | 1 + example/negative.go | 2 +- example/negative_enum.go | 66 +- example/negative_test.go | 101 + .../.snapshots/TestExampleFileMoreOptions | 2379 +++++++++++++++++ generator/generator_test.go | 23 + 6 files changed, 2513 insertions(+), 59 deletions(-) create mode 100644 example/negative_test.go create mode 100644 generator/.snapshots/TestExampleFileMoreOptions diff --git a/example/color_test.go b/example/color_test.go index 3c813c75..8d332f12 100644 --- a/example/color_test.go +++ b/example/color_test.go @@ -27,6 +27,7 @@ func TestColorMustParse(t *testing.T) { x := `avocadogreen` assert.PanicsWithError(t, x+" is not a valid Color", func() { MustParseColor(x) }) + assert.NotPanics(t, func() { MustParseColor(ColorGreen.String()) }) } func TestColorUnmarshal(t *testing.T) { diff --git a/example/negative.go b/example/negative.go index 60afbd51..ae02ba7b 100644 --- a/example/negative.go +++ b/example/negative.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE --marshal --lower --ptr --mustparse +//go:generate ../bin/go-enum -f=$GOFILE --nocase package example diff --git a/example/negative_enum.go b/example/negative_enum.go index 6f2dcb11..40f7821b 100644 --- a/example/negative_enum.go +++ b/example/negative_enum.go @@ -55,36 +55,11 @@ func ParseAllNegative(name string) (AllNegative, error) { if x, ok := _AllNegativeValue[name]; ok { return x, nil } - return AllNegative(0), fmt.Errorf("%s is not a valid AllNegative", name) -} - -// MustParseAllNegative converts a string to a AllNegative, and panics if is not valid. -func MustParseAllNegative(name string) AllNegative { - val, err := ParseAllNegative(name) - if err != nil { - panic(err) - } - return val -} - -func (x AllNegative) Ptr() *AllNegative { - return &x -} - -// MarshalText implements the text marshaller method. -func (x AllNegative) MarshalText() ([]byte, error) { - return []byte(x.String()), nil -} - -// UnmarshalText implements the text unmarshaller method. -func (x *AllNegative) UnmarshalText(text []byte) error { - name := string(text) - tmp, err := ParseAllNegative(name) - if err != nil { - return err + // Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to. + if x, ok := _AllNegativeValue[strings.ToLower(name)]; ok { + return x, nil } - *x = tmp - return nil + return AllNegative(0), fmt.Errorf("%s is not a valid AllNegative", name) } const ( @@ -126,34 +101,9 @@ func ParseStatus(name string) (Status, error) { if x, ok := _StatusValue[name]; ok { return x, nil } - return Status(0), fmt.Errorf("%s is not a valid Status", name) -} - -// MustParseStatus converts a string to a Status, and panics if is not valid. -func MustParseStatus(name string) Status { - val, err := ParseStatus(name) - if err != nil { - panic(err) - } - return val -} - -func (x Status) Ptr() *Status { - return &x -} - -// MarshalText implements the text marshaller method. -func (x Status) MarshalText() ([]byte, error) { - return []byte(x.String()), nil -} - -// UnmarshalText implements the text unmarshaller method. -func (x *Status) UnmarshalText(text []byte) error { - name := string(text) - tmp, err := ParseStatus(name) - if err != nil { - return err + // Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to. + if x, ok := _StatusValue[strings.ToLower(name)]; ok { + return x, nil } - *x = tmp - return nil + return Status(0), fmt.Errorf("%s is not a valid Status", name) } diff --git a/example/negative_test.go b/example/negative_test.go new file mode 100644 index 00000000..2f8c1f82 --- /dev/null +++ b/example/negative_test.go @@ -0,0 +1,101 @@ +package example + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestStatusString(t *testing.T) { + + tests := map[string]struct { + input string + output Status + }{ + "bad": { + input: `Bad`, + output: StatusBad, + }, + "unknown": { + input: `Unknown`, + output: StatusUnknown, + }, + "good": { + input: `Good`, + output: StatusGood, + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + output, err := ParseStatus(tc.input) + assert.NoError(t, err) + assert.Equal(t, tc.output, output) + + assert.Equal(t, tc.input, output.String()) + }) + } + + t.Run("failures", func(t *testing.T) { + assert.Equal(t, "Status(99)", Status(99).String()) + failedStatus, err := ParseStatus("") + assert.Error(t, err) + + assert.Equal(t, Status(0), failedStatus) + t.Run("cased", func(t *testing.T) { + actual, err := ParseStatus("BAD") + assert.NoError(t, err) + assert.Equal(t, StatusBad, actual) + }) + + }) +} + +func TestNegativeString(t *testing.T) { + + tests := map[string]struct { + input string + output AllNegative + }{ + "unknown": { + input: `Unknown`, + output: AllNegativeUnknown, + }, + "good": { + input: `Good`, + output: AllNegativeGood, + }, + "bad": { + input: `Bad`, + output: AllNegativeBad, + }, + "ugly": { + input: `Ugly`, + output: AllNegativeUgly, + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + output, err := ParseAllNegative(tc.input) + assert.NoError(t, err) + assert.Equal(t, tc.output, output) + + assert.Equal(t, tc.input, output.String()) + }) + } + + t.Run("failures", func(t *testing.T) { + assert.Equal(t, "AllNegative(99)", AllNegative(99).String()) + allN, err := ParseAllNegative("") + assert.Error(t, err) + + assert.Equal(t, AllNegative(0), allN) + + }) + t.Run("cased", func(t *testing.T) { + actual, err := ParseAllNegative("UGLY") + assert.NoError(t, err) + assert.Equal(t, AllNegativeUgly, actual) + }) +} diff --git a/generator/.snapshots/TestExampleFileMoreOptions b/generator/.snapshots/TestExampleFileMoreOptions new file mode 100644 index 00000000..b334af43 --- /dev/null +++ b/generator/.snapshots/TestExampleFileMoreOptions @@ -0,0 +1,2379 @@ +([]string) (len=2377) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", + (string) "", + (string) (len=17) "package generator", + (string) "", + (string) (len=8) "import (", + (string) (len=22) "\t\"database/sql/driver\"", + (string) (len=6) "\t\"fmt\"", + (string) (len=10) "\t\"strings\"", + (string) "", + (string) (len=24) "\t\"github.com/pkg/errors\"", + (string) (len=1) ")", + (string) "", + (string) (len=7) "const (", + (string) (len=38) "\t// AnimalCat is a Animal of type Cat.", + (string) (len=24) "\tAnimalCat Animal = iota", + (string) (len=38) "\t// AnimalDog is a Animal of type Dog.", + (string) (len=10) "\tAnimalDog", + (string) (len=40) "\t// AnimalFish is a Animal of type Fish.", + (string) (len=11) "\tAnimalFish", + (string) (len=1) ")", + (string) "", + (string) (len=32) "const _AnimalName = \"catdogfish\"", + (string) "", + (string) (len=28) "var _AnimalNames = []string{", + (string) (len=18) "\t_AnimalName[0:3],", + (string) (len=18) "\t_AnimalName[3:6],", + (string) (len=19) "\t_AnimalName[6:10],", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// AnimalNames returns a list of possible string values of Animal.", + (string) (len=29) "func AnimalNames() []string {", + (string) (len=41) "\ttmp := make([]string, len(_AnimalNames))", + (string) (len=24) "\tcopy(tmp, _AnimalNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _AnimalMap = map[Animal]string{", + (string) (len=30) "\tAnimalCat: _AnimalName[0:3],", + (string) (len=30) "\tAnimalDog: _AnimalName[3:6],", + (string) (len=31) "\tAnimalFish: _AnimalName[6:10],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=33) "func (x Animal) String() string {", + (string) (len=34) "\tif str, ok := _AnimalMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=37) "var _AnimalValue = map[string]Animal{", + (string) (len=47) "\t_AnimalName[0:3]: AnimalCat,", + (string) (len=47) "\tstrings.ToLower(_AnimalName[0:3]): AnimalCat,", + (string) (len=47) "\t_AnimalName[3:6]: AnimalDog,", + (string) (len=47) "\tstrings.ToLower(_AnimalName[3:6]): AnimalDog,", + (string) (len=48) "\t_AnimalName[6:10]: AnimalFish,", + (string) (len=48) "\tstrings.ToLower(_AnimalName[6:10]): AnimalFish,", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// ParseAnimal attempts to convert a string to a Animal.", + (string) (len=47) "func ParseAnimal(name string) (Animal, error) {", + (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=54) "\tif x, ok := _AnimalValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=107) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal, try [%s]\", name, strings.Join(_AnimalNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=77) "// MustParseAnimal converts a string to a Animal, and panics if is not valid.", + (string) (len=42) "func MustParseAnimal(name string) Animal {", + (string) (len=30) "\tval, err := ParseAnimal(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=47) "func (x Animal) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=51) "func (x *Animal) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=30) "\ttmp, err := ParseAnimal(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=93) "var _AnimalErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=54) "func (x *Animal) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=16) "\t\t*x = Animal(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=13) "\tcase string:", + (string) (len=26) "\t\t*x, err = ParseAnimal(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=34) "\t\t*x, err = ParseAnimal(string(v))", + (string) (len=13) "\tcase Animal:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=14) "\tcase *Animal:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x, err = ParseAnimal(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=47) "func (x Animal) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=32) "func ParseAnimalExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=50) "\t// CasesTest_lower is a Cases of type Test_lower.", + (string) (len=29) "\tCasesTest_lower Cases = iota", + (string) (len=54) "\t// CasesTest_capital is a Cases of type Test_capital.", + (string) (len=18) "\tCasesTest_capital", + (string) (len=72) "\t// CasesAnotherLowerCaseStart is a Cases of type AnotherLowerCaseStart.", + (string) (len=27) "\tCasesAnotherLowerCaseStart", + (string) (len=1) ")", + (string) "", + (string) (len=64) "const _CasesName = \"test_lowertest_capitalanotherlowercasestart\"", + (string) "", + (string) (len=27) "var _CasesNames = []string{", + (string) (len=18) "\t_CasesName[0:10],", + (string) (len=19) "\t_CasesName[10:22],", + (string) (len=19) "\t_CasesName[22:43],", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// CasesNames returns a list of possible string values of Cases.", + (string) (len=28) "func CasesNames() []string {", + (string) (len=40) "\ttmp := make([]string, len(_CasesNames))", + (string) (len=23) "\tcopy(tmp, _CasesNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _CasesMap = map[Cases]string{", + (string) (len=46) "\tCasesTest_lower: _CasesName[0:10],", + (string) (len=47) "\tCasesTest_capital: _CasesName[10:22],", + (string) (len=47) "\tCasesAnotherLowerCaseStart: _CasesName[22:43],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Cases) String() string {", + (string) (len=33) "\tif str, ok := _CasesMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _CasesValue = map[string]Cases{", + (string) (len=53) "\t_CasesName[0:10]: CasesTest_lower,", + (string) (len=53) "\tstrings.ToLower(_CasesName[0:10]): CasesTest_lower,", + (string) (len=55) "\t_CasesName[10:22]: CasesTest_capital,", + (string) (len=55) "\tstrings.ToLower(_CasesName[10:22]): CasesTest_capital,", + (string) (len=64) "\t_CasesName[22:43]: CasesAnotherLowerCaseStart,", + (string) (len=64) "\tstrings.ToLower(_CasesName[22:43]): CasesAnotherLowerCaseStart,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseCases attempts to convert a string to a Cases.", + (string) (len=45) "func ParseCases(name string) (Cases, error) {", + (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=53) "\tif x, ok := _CasesValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=104) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases, try [%s]\", name, strings.Join(_CasesNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=75) "// MustParseCases converts a string to a Cases, and panics if is not valid.", + (string) (len=40) "func MustParseCases(name string) Cases {", + (string) (len=29) "\tval, err := ParseCases(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Cases) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Cases) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseCases(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=92) "var _CasesErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=53) "func (x *Cases) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=15) "\t\t*x = Cases(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=13) "\tcase string:", + (string) (len=25) "\t\t*x, err = ParseCases(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=33) "\t\t*x, err = ParseCases(string(v))", + (string) (len=12) "\tcase Cases:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=13) "\tcase *Cases:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=26) "\t\t*x, err = ParseCases(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=46) "func (x Cases) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=31) "func ParseCasesExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=40) "\t// ColorBlack is a Color of type Black.", + (string) (len=24) "\tColorBlack Color = iota", + (string) (len=40) "\t// ColorWhite is a Color of type White.", + (string) (len=11) "\tColorWhite", + (string) (len=36) "\t// ColorRed is a Color of type Red.", + (string) (len=9) "\tColorRed", + (string) (len=40) "\t// ColorGreen is a Color of type Green.", + (string) (len=11) "\tColorGreen", + (string) (len=38) "\t// ColorBlue is a Color of type Blue.", + (string) (len=28) "\tColorBlue Color = iota + 29", + (string) (len=38) "\t// ColorGrey is a Color of type Grey.", + (string) (len=10) "\tColorGrey", + (string) (len=42) "\t// ColorYellow is a Color of type Yellow.", + (string) (len=12) "\tColorYellow", + (string) (len=1) ")", + (string) "", + (string) (len=53) "const _ColorName = \"blackwhiteredgreenbluegreyyellow\"", + (string) "", + (string) (len=27) "var _ColorNames = []string{", + (string) (len=17) "\t_ColorName[0:5],", + (string) (len=18) "\t_ColorName[5:10],", + (string) (len=19) "\t_ColorName[10:13],", + (string) (len=19) "\t_ColorName[13:18],", + (string) (len=19) "\t_ColorName[18:22],", + (string) (len=19) "\t_ColorName[22:26],", + (string) (len=19) "\t_ColorName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ColorNames returns a list of possible string values of Color.", + (string) (len=28) "func ColorNames() []string {", + (string) (len=40) "\ttmp := make([]string, len(_ColorNames))", + (string) (len=23) "\tcopy(tmp, _ColorNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _ColorMap = map[Color]string{", + (string) (len=30) "\tColorBlack: _ColorName[0:5],", + (string) (len=31) "\tColorWhite: _ColorName[5:10],", + (string) (len=32) "\tColorRed: _ColorName[10:13],", + (string) (len=32) "\tColorGreen: _ColorName[13:18],", + (string) (len=32) "\tColorBlue: _ColorName[18:22],", + (string) (len=32) "\tColorGrey: _ColorName[22:26],", + (string) (len=32) "\tColorYellow: _ColorName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Color) String() string {", + (string) (len=33) "\tif str, ok := _ColorMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _ColorValue = map[string]Color{", + (string) (len=48) "\t_ColorName[0:5]: ColorBlack,", + (string) (len=48) "\tstrings.ToLower(_ColorName[0:5]): ColorBlack,", + (string) (len=48) "\t_ColorName[5:10]: ColorWhite,", + (string) (len=48) "\tstrings.ToLower(_ColorName[5:10]): ColorWhite,", + (string) (len=46) "\t_ColorName[10:13]: ColorRed,", + (string) (len=46) "\tstrings.ToLower(_ColorName[10:13]): ColorRed,", + (string) (len=48) "\t_ColorName[13:18]: ColorGreen,", + (string) (len=48) "\tstrings.ToLower(_ColorName[13:18]): ColorGreen,", + (string) (len=47) "\t_ColorName[18:22]: ColorBlue,", + (string) (len=47) "\tstrings.ToLower(_ColorName[18:22]): ColorBlue,", + (string) (len=47) "\t_ColorName[22:26]: ColorGrey,", + (string) (len=47) "\tstrings.ToLower(_ColorName[22:26]): ColorGrey,", + (string) (len=49) "\t_ColorName[26:32]: ColorYellow,", + (string) (len=49) "\tstrings.ToLower(_ColorName[26:32]): ColorYellow,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseColor attempts to convert a string to a Color.", + (string) (len=45) "func ParseColor(name string) (Color, error) {", + (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=53) "\tif x, ok := _ColorValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=104) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color, try [%s]\", name, strings.Join(_ColorNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=75) "// MustParseColor converts a string to a Color, and panics if is not valid.", + (string) (len=40) "func MustParseColor(name string) Color {", + (string) (len=29) "\tval, err := ParseColor(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Color) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Color) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseColor(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=92) "var _ColorErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=53) "func (x *Color) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=15) "\t\t*x = Color(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=13) "\tcase string:", + (string) (len=25) "\t\t*x, err = ParseColor(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=33) "\t\t*x, err = ParseColor(string(v))", + (string) (len=12) "\tcase Color:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=13) "\tcase *Color:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=26) "\t\t*x, err = ParseColor(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=46) "func (x Color) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=31) "func ParseColorExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=62) "\t// ColorWithCommentBlack is a ColorWithComment of type Black.", + (string) (len=46) "\tColorWithCommentBlack ColorWithComment = iota", + (string) (len=62) "\t// ColorWithCommentWhite is a ColorWithComment of type White.", + (string) (len=22) "\tColorWithCommentWhite", + (string) (len=58) "\t// ColorWithCommentRed is a ColorWithComment of type Red.", + (string) (len=20) "\tColorWithCommentRed", + (string) (len=62) "\t// ColorWithCommentGreen is a ColorWithComment of type Green.", + (string) (len=22) "\tColorWithCommentGreen", + (string) (len=60) "\t// ColorWithCommentBlue is a ColorWithComment of type Blue.", + (string) (len=24) "\t// Blue starts with 33.", + (string) (len=50) "\tColorWithCommentBlue ColorWithComment = iota + 29", + (string) (len=60) "\t// ColorWithCommentGrey is a ColorWithComment of type Grey.", + (string) (len=21) "\tColorWithCommentGrey", + (string) (len=64) "\t// ColorWithCommentYellow is a ColorWithComment of type Yellow.", + (string) (len=23) "\tColorWithCommentYellow", + (string) (len=1) ")", + (string) "", + (string) (len=64) "const _ColorWithCommentName = \"blackwhiteredgreenbluegreyyellow\"", + (string) "", + (string) (len=38) "var _ColorWithCommentNames = []string{", + (string) (len=28) "\t_ColorWithCommentName[0:5],", + (string) (len=29) "\t_ColorWithCommentName[5:10],", + (string) (len=30) "\t_ColorWithCommentName[10:13],", + (string) (len=30) "\t_ColorWithCommentName[13:18],", + (string) (len=30) "\t_ColorWithCommentName[18:22],", + (string) (len=30) "\t_ColorWithCommentName[22:26],", + (string) (len=30) "\t_ColorWithCommentName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=86) "// ColorWithCommentNames returns a list of possible string values of ColorWithComment.", + (string) (len=39) "func ColorWithCommentNames() []string {", + (string) (len=51) "\ttmp := make([]string, len(_ColorWithCommentNames))", + (string) (len=34) "\tcopy(tmp, _ColorWithCommentNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", + (string) (len=52) "\tColorWithCommentBlack: _ColorWithCommentName[0:5],", + (string) (len=53) "\tColorWithCommentWhite: _ColorWithCommentName[5:10],", + (string) (len=54) "\tColorWithCommentRed: _ColorWithCommentName[10:13],", + (string) (len=54) "\tColorWithCommentGreen: _ColorWithCommentName[13:18],", + (string) (len=54) "\tColorWithCommentBlue: _ColorWithCommentName[18:22],", + (string) (len=54) "\tColorWithCommentGrey: _ColorWithCommentName[22:26],", + (string) (len=54) "\tColorWithCommentYellow: _ColorWithCommentName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=43) "func (x ColorWithComment) String() string {", + (string) (len=44) "\tif str, ok := _ColorWithCommentMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", + (string) (len=70) "\t_ColorWithCommentName[0:5]: ColorWithCommentBlack,", + (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[0:5]): ColorWithCommentBlack,", + (string) (len=70) "\t_ColorWithCommentName[5:10]: ColorWithCommentWhite,", + (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[5:10]): ColorWithCommentWhite,", + (string) (len=68) "\t_ColorWithCommentName[10:13]: ColorWithCommentRed,", + (string) (len=68) "\tstrings.ToLower(_ColorWithCommentName[10:13]): ColorWithCommentRed,", + (string) (len=70) "\t_ColorWithCommentName[13:18]: ColorWithCommentGreen,", + (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[13:18]): ColorWithCommentGreen,", + (string) (len=69) "\t_ColorWithCommentName[18:22]: ColorWithCommentBlue,", + (string) (len=69) "\tstrings.ToLower(_ColorWithCommentName[18:22]): ColorWithCommentBlue,", + (string) (len=69) "\t_ColorWithCommentName[22:26]: ColorWithCommentGrey,", + (string) (len=69) "\tstrings.ToLower(_ColorWithCommentName[22:26]): ColorWithCommentGrey,", + (string) (len=71) "\t_ColorWithCommentName[26:32]: ColorWithCommentYellow,", + (string) (len=71) "\tstrings.ToLower(_ColorWithCommentName[26:32]): ColorWithCommentYellow,", + (string) (len=1) "}", + (string) "", + (string) (len=76) "// ParseColorWithComment attempts to convert a string to a ColorWithComment.", + (string) (len=67) "func ParseColorWithComment(name string) (ColorWithComment, error) {", + (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=64) "\tif x, ok := _ColorWithCommentValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=137) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment, try [%s]\", name, strings.Join(_ColorWithCommentNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=97) "// MustParseColorWithComment converts a string to a ColorWithComment, and panics if is not valid.", + (string) (len=62) "func MustParseColorWithComment(name string) ColorWithComment {", + (string) (len=40) "\tval, err := ParseColorWithComment(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=57) "func (x ColorWithComment) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=61) "func (x *ColorWithComment) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=40) "\ttmp, err := ParseColorWithComment(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=103) "var _ColorWithCommentErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=64) "func (x *ColorWithComment) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=26) "\t\t*x = ColorWithComment(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=13) "\tcase string:", + (string) (len=36) "\t\t*x, err = ParseColorWithComment(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=44) "\t\t*x, err = ParseColorWithComment(string(v))", + (string) (len=23) "\tcase ColorWithComment:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=24) "\tcase *ColorWithComment:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=37) "\t\t*x, err = ParseColorWithComment(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=57) "func (x ColorWithComment) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=42) "func ParseColorWithCommentExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=64) "\t// ColorWithComment2Black is a ColorWithComment2 of type Black.", + (string) (len=48) "\tColorWithComment2Black ColorWithComment2 = iota", + (string) (len=64) "\t// ColorWithComment2White is a ColorWithComment2 of type White.", + (string) (len=23) "\tColorWithComment2White", + (string) (len=60) "\t// ColorWithComment2Red is a ColorWithComment2 of type Red.", + (string) (len=21) "\tColorWithComment2Red", + (string) (len=64) "\t// ColorWithComment2Green is a ColorWithComment2 of type Green.", + (string) (len=23) "\tColorWithComment2Green", + (string) (len=62) "\t// ColorWithComment2Blue is a ColorWithComment2 of type Blue.", + (string) (len=23) "\t// Blue starts with 33", + (string) (len=52) "\tColorWithComment2Blue ColorWithComment2 = iota + 29", + (string) (len=62) "\t// ColorWithComment2Grey is a ColorWithComment2 of type Grey.", + (string) (len=22) "\tColorWithComment2Grey", + (string) (len=66) "\t// ColorWithComment2Yellow is a ColorWithComment2 of type Yellow.", + (string) (len=24) "\tColorWithComment2Yellow", + (string) (len=1) ")", + (string) "", + (string) (len=65) "const _ColorWithComment2Name = \"blackwhiteredgreenbluegreyyellow\"", + (string) "", + (string) (len=39) "var _ColorWithComment2Names = []string{", + (string) (len=29) "\t_ColorWithComment2Name[0:5],", + (string) (len=30) "\t_ColorWithComment2Name[5:10],", + (string) (len=31) "\t_ColorWithComment2Name[10:13],", + (string) (len=31) "\t_ColorWithComment2Name[13:18],", + (string) (len=31) "\t_ColorWithComment2Name[18:22],", + (string) (len=31) "\t_ColorWithComment2Name[22:26],", + (string) (len=31) "\t_ColorWithComment2Name[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=88) "// ColorWithComment2Names returns a list of possible string values of ColorWithComment2.", + (string) (len=40) "func ColorWithComment2Names() []string {", + (string) (len=52) "\ttmp := make([]string, len(_ColorWithComment2Names))", + (string) (len=35) "\tcopy(tmp, _ColorWithComment2Names)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", + (string) (len=54) "\tColorWithComment2Black: _ColorWithComment2Name[0:5],", + (string) (len=55) "\tColorWithComment2White: _ColorWithComment2Name[5:10],", + (string) (len=56) "\tColorWithComment2Red: _ColorWithComment2Name[10:13],", + (string) (len=56) "\tColorWithComment2Green: _ColorWithComment2Name[13:18],", + (string) (len=56) "\tColorWithComment2Blue: _ColorWithComment2Name[18:22],", + (string) (len=56) "\tColorWithComment2Grey: _ColorWithComment2Name[22:26],", + (string) (len=56) "\tColorWithComment2Yellow: _ColorWithComment2Name[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment2) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment2Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", + (string) (len=72) "\t_ColorWithComment2Name[0:5]: ColorWithComment2Black,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): ColorWithComment2Black,", + (string) (len=72) "\t_ColorWithComment2Name[5:10]: ColorWithComment2White,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[5:10]): ColorWithComment2White,", + (string) (len=70) "\t_ColorWithComment2Name[10:13]: ColorWithComment2Red,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment2Name[10:13]): ColorWithComment2Red,", + (string) (len=72) "\t_ColorWithComment2Name[13:18]: ColorWithComment2Green,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[13:18]): ColorWithComment2Green,", + (string) (len=71) "\t_ColorWithComment2Name[18:22]: ColorWithComment2Blue,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment2Name[18:22]): ColorWithComment2Blue,", + (string) (len=71) "\t_ColorWithComment2Name[22:26]: ColorWithComment2Grey,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment2Name[22:26]): ColorWithComment2Grey,", + (string) (len=73) "\t_ColorWithComment2Name[26:32]: ColorWithComment2Yellow,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): ColorWithComment2Yellow,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2.", + (string) (len=69) "func ParseColorWithComment2(name string) (ColorWithComment2, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=65) "\tif x, ok := _ColorWithComment2Value[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=140) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2, try [%s]\", name, strings.Join(_ColorWithComment2Names, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=99) "// MustParseColorWithComment2 converts a string to a ColorWithComment2, and panics if is not valid.", + (string) (len=64) "func MustParseColorWithComment2(name string) ColorWithComment2 {", + (string) (len=41) "\tval, err := ParseColorWithComment2(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment2) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment2) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment2(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=104) "var _ColorWithComment2ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=65) "func (x *ColorWithComment2) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=27) "\t\t*x = ColorWithComment2(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=13) "\tcase string:", + (string) (len=37) "\t\t*x, err = ParseColorWithComment2(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=45) "\t\t*x, err = ParseColorWithComment2(string(v))", + (string) (len=24) "\tcase ColorWithComment2:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=25) "\tcase *ColorWithComment2:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=38) "\t\t*x, err = ParseColorWithComment2(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x ColorWithComment2) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=43) "func ParseColorWithComment2Example() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=64) "\t// ColorWithComment3Black is a ColorWithComment3 of type Black.", + (string) (len=48) "\tColorWithComment3Black ColorWithComment3 = iota", + (string) (len=64) "\t// ColorWithComment3White is a ColorWithComment3 of type White.", + (string) (len=23) "\tColorWithComment3White", + (string) (len=60) "\t// ColorWithComment3Red is a ColorWithComment3 of type Red.", + (string) (len=21) "\tColorWithComment3Red", + (string) (len=64) "\t// ColorWithComment3Green is a ColorWithComment3 of type Green.", + (string) (len=24) "\t// Green starts with 33", + (string) (len=53) "\tColorWithComment3Green ColorWithComment3 = iota + 30", + (string) (len=62) "\t// ColorWithComment3Blue is a ColorWithComment3 of type Blue.", + (string) (len=22) "\tColorWithComment3Blue", + (string) (len=62) "\t// ColorWithComment3Grey is a ColorWithComment3 of type Grey.", + (string) (len=22) "\tColorWithComment3Grey", + (string) (len=66) "\t// ColorWithComment3Yellow is a ColorWithComment3 of type Yellow.", + (string) (len=24) "\tColorWithComment3Yellow", + (string) (len=73) "\t// ColorWithComment3BlueGreen is a ColorWithComment3 of type Blue-Green.", + (string) (len=22) "\t// blue-green comment", + (string) (len=27) "\tColorWithComment3BlueGreen", + (string) (len=73) "\t// ColorWithComment3RedOrange is a ColorWithComment3 of type Red-Orange.", + (string) (len=27) "\tColorWithComment3RedOrange", + (string) (len=82) "\t// ColorWithComment3RedOrangeBlue is a ColorWithComment3 of type Red-Orange-Blue.", + (string) (len=31) "\tColorWithComment3RedOrangeBlue", + (string) (len=1) ")", + (string) "", + (string) (len=100) "const _ColorWithComment3Name = \"blackwhiteredgreenbluegreyyellowblue-greenred-orangered-orange-blue\"", + (string) "", + (string) (len=39) "var _ColorWithComment3Names = []string{", + (string) (len=29) "\t_ColorWithComment3Name[0:5],", + (string) (len=30) "\t_ColorWithComment3Name[5:10],", + (string) (len=31) "\t_ColorWithComment3Name[10:13],", + (string) (len=31) "\t_ColorWithComment3Name[13:18],", + (string) (len=31) "\t_ColorWithComment3Name[18:22],", + (string) (len=31) "\t_ColorWithComment3Name[22:26],", + (string) (len=31) "\t_ColorWithComment3Name[26:32],", + (string) (len=31) "\t_ColorWithComment3Name[32:42],", + (string) (len=31) "\t_ColorWithComment3Name[42:52],", + (string) (len=31) "\t_ColorWithComment3Name[52:67],", + (string) (len=1) "}", + (string) "", + (string) (len=88) "// ColorWithComment3Names returns a list of possible string values of ColorWithComment3.", + (string) (len=40) "func ColorWithComment3Names() []string {", + (string) (len=52) "\ttmp := make([]string, len(_ColorWithComment3Names))", + (string) (len=35) "\tcopy(tmp, _ColorWithComment3Names)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", + (string) (len=61) "\tColorWithComment3Black: _ColorWithComment3Name[0:5],", + (string) (len=62) "\tColorWithComment3White: _ColorWithComment3Name[5:10],", + (string) (len=63) "\tColorWithComment3Red: _ColorWithComment3Name[10:13],", + (string) (len=63) "\tColorWithComment3Green: _ColorWithComment3Name[13:18],", + (string) (len=63) "\tColorWithComment3Blue: _ColorWithComment3Name[18:22],", + (string) (len=63) "\tColorWithComment3Grey: _ColorWithComment3Name[22:26],", + (string) (len=63) "\tColorWithComment3Yellow: _ColorWithComment3Name[26:32],", + (string) (len=63) "\tColorWithComment3BlueGreen: _ColorWithComment3Name[32:42],", + (string) (len=63) "\tColorWithComment3RedOrange: _ColorWithComment3Name[42:52],", + (string) (len=63) "\tColorWithComment3RedOrangeBlue: _ColorWithComment3Name[52:67],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment3) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment3Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", + (string) (len=72) "\t_ColorWithComment3Name[0:5]: ColorWithComment3Black,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): ColorWithComment3Black,", + (string) (len=72) "\t_ColorWithComment3Name[5:10]: ColorWithComment3White,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[5:10]): ColorWithComment3White,", + (string) (len=70) "\t_ColorWithComment3Name[10:13]: ColorWithComment3Red,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment3Name[10:13]): ColorWithComment3Red,", + (string) (len=72) "\t_ColorWithComment3Name[13:18]: ColorWithComment3Green,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[13:18]): ColorWithComment3Green,", + (string) (len=71) "\t_ColorWithComment3Name[18:22]: ColorWithComment3Blue,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment3Name[18:22]): ColorWithComment3Blue,", + (string) (len=71) "\t_ColorWithComment3Name[22:26]: ColorWithComment3Grey,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment3Name[22:26]): ColorWithComment3Grey,", + (string) (len=73) "\t_ColorWithComment3Name[26:32]: ColorWithComment3Yellow,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment3Name[26:32]): ColorWithComment3Yellow,", + (string) (len=76) "\t_ColorWithComment3Name[32:42]: ColorWithComment3BlueGreen,", + (string) (len=76) "\tstrings.ToLower(_ColorWithComment3Name[32:42]): ColorWithComment3BlueGreen,", + (string) (len=76) "\t_ColorWithComment3Name[42:52]: ColorWithComment3RedOrange,", + (string) (len=76) "\tstrings.ToLower(_ColorWithComment3Name[42:52]): ColorWithComment3RedOrange,", + (string) (len=80) "\t_ColorWithComment3Name[52:67]: ColorWithComment3RedOrangeBlue,", + (string) (len=80) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): ColorWithComment3RedOrangeBlue,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3.", + (string) (len=69) "func ParseColorWithComment3(name string) (ColorWithComment3, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=65) "\tif x, ok := _ColorWithComment3Value[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=140) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3, try [%s]\", name, strings.Join(_ColorWithComment3Names, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=99) "// MustParseColorWithComment3 converts a string to a ColorWithComment3, and panics if is not valid.", + (string) (len=64) "func MustParseColorWithComment3(name string) ColorWithComment3 {", + (string) (len=41) "\tval, err := ParseColorWithComment3(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment3) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment3) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment3(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=104) "var _ColorWithComment3ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=65) "func (x *ColorWithComment3) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=27) "\t\t*x = ColorWithComment3(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=13) "\tcase string:", + (string) (len=37) "\t\t*x, err = ParseColorWithComment3(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=45) "\t\t*x, err = ParseColorWithComment3(string(v))", + (string) (len=24) "\tcase ColorWithComment3:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=25) "\tcase *ColorWithComment3:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=38) "\t\t*x, err = ParseColorWithComment3(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x ColorWithComment3) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=43) "func ParseColorWithComment3Example() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=18) "\t// Skipped value.", + (string) (len=15) "\t// Placeholder", + (string) (len=27) "\t_ ColorWithComment4 = iota", + (string) (len=64) "\t// ColorWithComment4Black is a ColorWithComment4 of type Black.", + (string) (len=23) "\tColorWithComment4Black", + (string) (len=64) "\t// ColorWithComment4White is a ColorWithComment4 of type White.", + (string) (len=23) "\tColorWithComment4White", + (string) (len=60) "\t// ColorWithComment4Red is a ColorWithComment4 of type Red.", + (string) (len=21) "\tColorWithComment4Red", + (string) (len=64) "\t// ColorWithComment4Green is a ColorWithComment4 of type Green.", + (string) (len=24) "\t// Green starts with 33", + (string) (len=53) "\tColorWithComment4Green ColorWithComment4 = iota + 29", + (string) (len=62) "\t// ColorWithComment4Blue is a ColorWithComment4 of type Blue.", + (string) (len=22) "\tColorWithComment4Blue", + (string) (len=62) "\t// ColorWithComment4Grey is a ColorWithComment4 of type Grey.", + (string) (len=22) "\tColorWithComment4Grey", + (string) (len=66) "\t// ColorWithComment4Yellow is a ColorWithComment4 of type Yellow.", + (string) (len=110) "\t// Where did all the (somewhat) bad fish go? (something else that goes in parentheses at the end of the line)", + (string) (len=24) "\tColorWithComment4Yellow", + (string) (len=73) "\t// ColorWithComment4BlueGreen is a ColorWithComment4 of type Blue-Green.", + (string) (len=22) "\t// blue-green comment", + (string) (len=27) "\tColorWithComment4BlueGreen", + (string) (len=73) "\t// ColorWithComment4RedOrange is a ColorWithComment4 of type Red-Orange.", + (string) (len=20) "\t// has a , in it!?!", + (string) (len=27) "\tColorWithComment4RedOrange", + (string) (len=1) ")", + (string) "", + (string) (len=85) "const _ColorWithComment4Name = \"blackwhiteredgreenbluegreyyellowblue-greenred-orange\"", + (string) "", + (string) (len=39) "var _ColorWithComment4Names = []string{", + (string) (len=29) "\t_ColorWithComment4Name[0:5],", + (string) (len=30) "\t_ColorWithComment4Name[5:10],", + (string) (len=31) "\t_ColorWithComment4Name[10:13],", + (string) (len=31) "\t_ColorWithComment4Name[13:18],", + (string) (len=31) "\t_ColorWithComment4Name[18:22],", + (string) (len=31) "\t_ColorWithComment4Name[22:26],", + (string) (len=31) "\t_ColorWithComment4Name[26:32],", + (string) (len=31) "\t_ColorWithComment4Name[32:42],", + (string) (len=31) "\t_ColorWithComment4Name[42:52],", + (string) (len=1) "}", + (string) "", + (string) (len=88) "// ColorWithComment4Names returns a list of possible string values of ColorWithComment4.", + (string) (len=40) "func ColorWithComment4Names() []string {", + (string) (len=52) "\ttmp := make([]string, len(_ColorWithComment4Names))", + (string) (len=35) "\tcopy(tmp, _ColorWithComment4Names)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", + (string) (len=57) "\tColorWithComment4Black: _ColorWithComment4Name[0:5],", + (string) (len=58) "\tColorWithComment4White: _ColorWithComment4Name[5:10],", + (string) (len=59) "\tColorWithComment4Red: _ColorWithComment4Name[10:13],", + (string) (len=59) "\tColorWithComment4Green: _ColorWithComment4Name[13:18],", + (string) (len=59) "\tColorWithComment4Blue: _ColorWithComment4Name[18:22],", + (string) (len=59) "\tColorWithComment4Grey: _ColorWithComment4Name[22:26],", + (string) (len=59) "\tColorWithComment4Yellow: _ColorWithComment4Name[26:32],", + (string) (len=59) "\tColorWithComment4BlueGreen: _ColorWithComment4Name[32:42],", + (string) (len=59) "\tColorWithComment4RedOrange: _ColorWithComment4Name[42:52],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment4) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment4Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", + (string) (len=72) "\t_ColorWithComment4Name[0:5]: ColorWithComment4Black,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): ColorWithComment4Black,", + (string) (len=72) "\t_ColorWithComment4Name[5:10]: ColorWithComment4White,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[5:10]): ColorWithComment4White,", + (string) (len=70) "\t_ColorWithComment4Name[10:13]: ColorWithComment4Red,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment4Name[10:13]): ColorWithComment4Red,", + (string) (len=72) "\t_ColorWithComment4Name[13:18]: ColorWithComment4Green,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[13:18]): ColorWithComment4Green,", + (string) (len=71) "\t_ColorWithComment4Name[18:22]: ColorWithComment4Blue,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment4Name[18:22]): ColorWithComment4Blue,", + (string) (len=71) "\t_ColorWithComment4Name[22:26]: ColorWithComment4Grey,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment4Name[22:26]): ColorWithComment4Grey,", + (string) (len=73) "\t_ColorWithComment4Name[26:32]: ColorWithComment4Yellow,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment4Name[26:32]): ColorWithComment4Yellow,", + (string) (len=76) "\t_ColorWithComment4Name[32:42]: ColorWithComment4BlueGreen,", + (string) (len=76) "\tstrings.ToLower(_ColorWithComment4Name[32:42]): ColorWithComment4BlueGreen,", + (string) (len=76) "\t_ColorWithComment4Name[42:52]: ColorWithComment4RedOrange,", + (string) (len=76) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): ColorWithComment4RedOrange,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4.", + (string) (len=69) "func ParseColorWithComment4(name string) (ColorWithComment4, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=65) "\tif x, ok := _ColorWithComment4Value[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=140) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4, try [%s]\", name, strings.Join(_ColorWithComment4Names, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=99) "// MustParseColorWithComment4 converts a string to a ColorWithComment4, and panics if is not valid.", + (string) (len=64) "func MustParseColorWithComment4(name string) ColorWithComment4 {", + (string) (len=41) "\tval, err := ParseColorWithComment4(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment4) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment4) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment4(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=104) "var _ColorWithComment4ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=65) "func (x *ColorWithComment4) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=27) "\t\t*x = ColorWithComment4(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=13) "\tcase string:", + (string) (len=37) "\t\t*x, err = ParseColorWithComment4(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=45) "\t\t*x, err = ParseColorWithComment4(string(v))", + (string) (len=24) "\tcase ColorWithComment4:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=25) "\tcase *ColorWithComment4:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=38) "\t\t*x, err = ParseColorWithComment4(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x ColorWithComment4) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=43) "func ParseColorWithComment4Example() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=52) "\t// Enum64bitUnknown is a Enum64bit of type Unknown.", + (string) (len=34) "\tEnum64bitUnknown Enum64bit = iota", + (string) (len=48) "\t// Enum64bitE2P15 is a Enum64bit of type E2P15.", + (string) (len=40) "\tEnum64bitE2P15 Enum64bit = iota + 32767", + (string) (len=48) "\t// Enum64bitE2P16 is a Enum64bit of type E2P16.", + (string) (len=40) "\tEnum64bitE2P16 Enum64bit = iota + 65534", + (string) (len=48) "\t// Enum64bitE2P17 is a Enum64bit of type E2P17.", + (string) (len=41) "\tEnum64bitE2P17 Enum64bit = iota + 131069", + (string) (len=48) "\t// Enum64bitE2P18 is a Enum64bit of type E2P18.", + (string) (len=41) "\tEnum64bitE2P18 Enum64bit = iota + 262140", + (string) (len=48) "\t// Enum64bitE2P19 is a Enum64bit of type E2P19.", + (string) (len=41) "\tEnum64bitE2P19 Enum64bit = iota + 524283", + (string) (len=48) "\t// Enum64bitE2P20 is a Enum64bit of type E2P20.", + (string) (len=42) "\tEnum64bitE2P20 Enum64bit = iota + 1048570", + (string) (len=48) "\t// Enum64bitE2P21 is a Enum64bit of type E2P21.", + (string) (len=42) "\tEnum64bitE2P21 Enum64bit = iota + 2097145", + (string) (len=48) "\t// Enum64bitE2P22 is a Enum64bit of type E2P22.", + (string) (len=43) "\tEnum64bitE2P22 Enum64bit = iota + 33554424", + (string) (len=48) "\t// Enum64bitE2P23 is a Enum64bit of type E2P23.", + (string) (len=43) "\tEnum64bitE2P23 Enum64bit = iota + 67108855", + (string) (len=48) "\t// Enum64bitE2P28 is a Enum64bit of type E2P28.", + (string) (len=44) "\tEnum64bitE2P28 Enum64bit = iota + 536870902", + (string) (len=48) "\t// Enum64bitE2P30 is a Enum64bit of type E2P30.", + (string) (len=45) "\tEnum64bitE2P30 Enum64bit = iota + 1073741813", + (string) (len=48) "\t// Enum64bitE2P31 is a Enum64bit of type E2P31.", + (string) (len=45) "\tEnum64bitE2P31 Enum64bit = iota + 2147483636", + (string) (len=48) "\t// Enum64bitE2P32 is a Enum64bit of type E2P32.", + (string) (len=45) "\tEnum64bitE2P32 Enum64bit = iota + 4294967283", + (string) (len=48) "\t// Enum64bitE2P33 is a Enum64bit of type E2P33.", + (string) (len=45) "\tEnum64bitE2P33 Enum64bit = iota + 8454967282", + (string) (len=1) ")", + (string) "", + (string) (len=102) "const _Enum64bitName = \"unknowne2p15e2p16e2p17e2p18e2p19e2p20e2p21e2p22e2p23e2p28e2p30e2p31e2p32e2p33\"", + (string) "", + (string) (len=31) "var _Enum64bitNames = []string{", + (string) (len=21) "\t_Enum64bitName[0:7],", + (string) (len=22) "\t_Enum64bitName[7:12],", + (string) (len=23) "\t_Enum64bitName[12:17],", + (string) (len=23) "\t_Enum64bitName[17:22],", + (string) (len=23) "\t_Enum64bitName[22:27],", + (string) (len=23) "\t_Enum64bitName[27:32],", + (string) (len=23) "\t_Enum64bitName[32:37],", + (string) (len=23) "\t_Enum64bitName[37:42],", + (string) (len=23) "\t_Enum64bitName[42:47],", + (string) (len=23) "\t_Enum64bitName[47:52],", + (string) (len=23) "\t_Enum64bitName[52:57],", + (string) (len=23) "\t_Enum64bitName[57:62],", + (string) (len=23) "\t_Enum64bitName[62:67],", + (string) (len=23) "\t_Enum64bitName[67:72],", + (string) (len=23) "\t_Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=72) "// Enum64bitNames returns a list of possible string values of Enum64bit.", + (string) (len=32) "func Enum64bitNames() []string {", + (string) (len=44) "\ttmp := make([]string, len(_Enum64bitNames))", + (string) (len=27) "\tcopy(tmp, _Enum64bitNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", + (string) (len=39) "\tEnum64bitUnknown: _Enum64bitName[0:7],", + (string) (len=40) "\tEnum64bitE2P15: _Enum64bitName[7:12],", + (string) (len=41) "\tEnum64bitE2P16: _Enum64bitName[12:17],", + (string) (len=41) "\tEnum64bitE2P17: _Enum64bitName[17:22],", + (string) (len=41) "\tEnum64bitE2P18: _Enum64bitName[22:27],", + (string) (len=41) "\tEnum64bitE2P19: _Enum64bitName[27:32],", + (string) (len=41) "\tEnum64bitE2P20: _Enum64bitName[32:37],", + (string) (len=41) "\tEnum64bitE2P21: _Enum64bitName[37:42],", + (string) (len=41) "\tEnum64bitE2P22: _Enum64bitName[42:47],", + (string) (len=41) "\tEnum64bitE2P23: _Enum64bitName[47:52],", + (string) (len=41) "\tEnum64bitE2P28: _Enum64bitName[52:57],", + (string) (len=41) "\tEnum64bitE2P30: _Enum64bitName[57:62],", + (string) (len=41) "\tEnum64bitE2P31: _Enum64bitName[62:67],", + (string) (len=41) "\tEnum64bitE2P32: _Enum64bitName[67:72],", + (string) (len=41) "\tEnum64bitE2P33: _Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x Enum64bit) String() string {", + (string) (len=37) "\tif str, ok := _Enum64bitMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", + (string) (len=58) "\t_Enum64bitName[0:7]: Enum64bitUnknown,", + (string) (len=58) "\tstrings.ToLower(_Enum64bitName[0:7]): Enum64bitUnknown,", + (string) (len=56) "\t_Enum64bitName[7:12]: Enum64bitE2P15,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[7:12]): Enum64bitE2P15,", + (string) (len=56) "\t_Enum64bitName[12:17]: Enum64bitE2P16,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[12:17]): Enum64bitE2P16,", + (string) (len=56) "\t_Enum64bitName[17:22]: Enum64bitE2P17,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[17:22]): Enum64bitE2P17,", + (string) (len=56) "\t_Enum64bitName[22:27]: Enum64bitE2P18,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[22:27]): Enum64bitE2P18,", + (string) (len=56) "\t_Enum64bitName[27:32]: Enum64bitE2P19,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[27:32]): Enum64bitE2P19,", + (string) (len=56) "\t_Enum64bitName[32:37]: Enum64bitE2P20,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[32:37]): Enum64bitE2P20,", + (string) (len=56) "\t_Enum64bitName[37:42]: Enum64bitE2P21,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[37:42]): Enum64bitE2P21,", + (string) (len=56) "\t_Enum64bitName[42:47]: Enum64bitE2P22,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[42:47]): Enum64bitE2P22,", + (string) (len=56) "\t_Enum64bitName[47:52]: Enum64bitE2P23,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[47:52]): Enum64bitE2P23,", + (string) (len=56) "\t_Enum64bitName[52:57]: Enum64bitE2P28,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[52:57]): Enum64bitE2P28,", + (string) (len=56) "\t_Enum64bitName[57:62]: Enum64bitE2P30,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[57:62]): Enum64bitE2P30,", + (string) (len=56) "\t_Enum64bitName[62:67]: Enum64bitE2P31,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[62:67]): Enum64bitE2P31,", + (string) (len=56) "\t_Enum64bitName[67:72]: Enum64bitE2P32,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[67:72]): Enum64bitE2P32,", + (string) (len=56) "\t_Enum64bitName[72:77]: Enum64bitE2P33,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[72:77]): Enum64bitE2P33,", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// ParseEnum64bit attempts to convert a string to a Enum64bit.", + (string) (len=53) "func ParseEnum64bit(name string) (Enum64bit, error) {", + (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=57) "\tif x, ok := _Enum64bitValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=116) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit, try [%s]\", name, strings.Join(_Enum64bitNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=83) "// MustParseEnum64bit converts a string to a Enum64bit, and panics if is not valid.", + (string) (len=48) "func MustParseEnum64bit(name string) Enum64bit {", + (string) (len=33) "\tval, err := ParseEnum64bit(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=50) "func (x Enum64bit) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=54) "func (x *Enum64bit) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=33) "\ttmp, err := ParseEnum64bit(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=96) "var _Enum64bitErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=57) "func (x *Enum64bit) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=19) "\t\t*x = Enum64bit(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=13) "\tcase string:", + (string) (len=29) "\t\t*x, err = ParseEnum64bit(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=37) "\t\t*x, err = ParseEnum64bit(string(v))", + (string) (len=16) "\tcase Enum64bit:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=17) "\tcase *Enum64bit:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=30) "\t\t*x, err = ParseEnum64bit(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=50) "func (x Enum64bit) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=35) "func ParseEnum64bitExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=42) "\t// ModelToyota is a Model of type Toyota.", + (string) (len=25) "\tModelToyota Model = iota", + (string) (len=18) "\t// Skipped value.", + (string) (len=2) "\t_", + (string) (len=40) "\t// ModelChevy is a Model of type Chevy.", + (string) (len=11) "\tModelChevy", + (string) (len=18) "\t// Skipped value.", + (string) (len=2) "\t_", + (string) (len=38) "\t// ModelFord is a Model of type Ford.", + (string) (len=10) "\tModelFord", + (string) (len=1) ")", + (string) "", + (string) (len=36) "const _ModelName = \"toyotachevyford\"", + (string) "", + (string) (len=27) "var _ModelNames = []string{", + (string) (len=17) "\t_ModelName[0:6],", + (string) (len=18) "\t_ModelName[6:11],", + (string) (len=19) "\t_ModelName[11:15],", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ModelNames returns a list of possible string values of Model.", + (string) (len=28) "func ModelNames() []string {", + (string) (len=40) "\ttmp := make([]string, len(_ModelNames))", + (string) (len=23) "\tcopy(tmp, _ModelNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _ModelMap = map[Model]string{", + (string) (len=30) "\tModelToyota: _ModelName[0:6],", + (string) (len=31) "\tModelChevy: _ModelName[6:11],", + (string) (len=32) "\tModelFord: _ModelName[11:15],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Model) String() string {", + (string) (len=33) "\tif str, ok := _ModelMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _ModelValue = map[string]Model{", + (string) (len=49) "\t_ModelName[0:6]: ModelToyota,", + (string) (len=49) "\tstrings.ToLower(_ModelName[0:6]): ModelToyota,", + (string) (len=48) "\t_ModelName[6:11]: ModelChevy,", + (string) (len=48) "\tstrings.ToLower(_ModelName[6:11]): ModelChevy,", + (string) (len=47) "\t_ModelName[11:15]: ModelFord,", + (string) (len=47) "\tstrings.ToLower(_ModelName[11:15]): ModelFord,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseModel attempts to convert a string to a Model.", + (string) (len=45) "func ParseModel(name string) (Model, error) {", + (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=53) "\tif x, ok := _ModelValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=104) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model, try [%s]\", name, strings.Join(_ModelNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=75) "// MustParseModel converts a string to a Model, and panics if is not valid.", + (string) (len=40) "func MustParseModel(name string) Model {", + (string) (len=29) "\tval, err := ParseModel(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Model) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Model) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseModel(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=92) "var _ModelErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=53) "func (x *Model) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=15) "\t\t*x = Model(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=13) "\tcase string:", + (string) (len=25) "\t\t*x, err = ParseModel(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=33) "\t\t*x, err = ParseModel(string(v))", + (string) (len=12) "\tcase Model:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=13) "\tcase *Model:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=26) "\t\t*x, err = ParseModel(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=46) "func (x Model) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=31) "func ParseModelExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=60) "\t// NonASCIIПродам is a NonASCII of type Продам.", + (string) (len=44) "\tNonASCIIПродам NonASCII = iota + 1114", + (string) (len=48) "\t// NonASCII車庫 is a NonASCII of type 車庫.", + (string) (len=37) "\tNonASCII車庫 NonASCII = iota + 299", + (string) (len=52) "\t// NonASCIIԷժան is a NonASCII of type Էժան.", + (string) (len=38) "\tNonASCIIԷժան NonASCII = iota + -1", + (string) (len=1) ")", + (string) "", + (string) (len=50) "const _NonASCIIName = \"продам車庫էժան\"", + (string) "", + (string) (len=30) "var _NonASCIINames = []string{", + (string) (len=21) "\t_NonASCIIName[0:12],", + (string) (len=22) "\t_NonASCIIName[12:18],", + (string) (len=22) "\t_NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=70) "// NonASCIINames returns a list of possible string values of NonASCII.", + (string) (len=31) "func NonASCIINames() []string {", + (string) (len=43) "\ttmp := make([]string, len(_NonASCIINames))", + (string) (len=26) "\tcopy(tmp, _NonASCIINames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", + (string) (len=43) "\tNonASCIIПродам: _NonASCIIName[0:12],", + (string) (len=42) "\tNonASCII車庫: _NonASCIIName[12:18],", + (string) (len=42) "\tNonASCIIԷժան: _NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=35) "func (x NonASCII) String() string {", + (string) (len=36) "\tif str, ok := _NonASCIIMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", + (string) (len=61) "\t_NonASCIIName[0:12]: NonASCIIПродам,", + (string) (len=61) "\tstrings.ToLower(_NonASCIIName[0:12]): NonASCIIПродам,", + (string) (len=55) "\t_NonASCIIName[12:18]: NonASCII車庫,", + (string) (len=55) "\tstrings.ToLower(_NonASCIIName[12:18]): NonASCII車庫,", + (string) (len=57) "\t_NonASCIIName[18:26]: NonASCIIԷժան,", + (string) (len=57) "\tstrings.ToLower(_NonASCIIName[18:26]): NonASCIIԷժան,", + (string) (len=1) "}", + (string) "", + (string) (len=60) "// ParseNonASCII attempts to convert a string to a NonASCII.", + (string) (len=51) "func ParseNonASCII(name string) (NonASCII, error) {", + (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=56) "\tif x, ok := _NonASCIIValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=113) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII, try [%s]\", name, strings.Join(_NonASCIINames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=81) "// MustParseNonASCII converts a string to a NonASCII, and panics if is not valid.", + (string) (len=46) "func MustParseNonASCII(name string) NonASCII {", + (string) (len=32) "\tval, err := ParseNonASCII(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=49) "func (x NonASCII) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=53) "func (x *NonASCII) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=32) "\ttmp, err := ParseNonASCII(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=95) "var _NonASCIIErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=56) "func (x *NonASCII) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=18) "\t\t*x = NonASCII(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=13) "\tcase string:", + (string) (len=28) "\t\t*x, err = ParseNonASCII(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=36) "\t\t*x, err = ParseNonASCII(string(v))", + (string) (len=15) "\tcase NonASCII:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=16) "\tcase *NonASCII:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=29) "\t\t*x, err = ParseNonASCII(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=49) "func (x NonASCII) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=34) "func ParseNonASCIIExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=61) "\t// SanitizingTestHyphen is a Sanitizing of type Test-Hyphen.", + (string) (len=39) "\tSanitizingTestHyphen Sanitizing = iota", + (string) (len=63) "\t// SanitizingHyphenStart is a Sanitizing of type -HyphenStart.", + (string) (len=22) "\tSanitizingHyphenStart", + (string) (len=72) "\t// Sanitizing_underscoreFirst is a Sanitizing of type _underscoreFirst.", + (string) (len=27) "\tSanitizing_underscoreFirst", + (string) (len=64) "\t// Sanitizing0numberFirst is a Sanitizing of type 0numberFirst.", + (string) (len=23) "\tSanitizing0numberFirst", + (string) (len=60) "\t// Sanitizing123456789a is a Sanitizing of type 123456789a.", + (string) (len=21) "\tSanitizing123456789a", + (string) (len=61) "\t// Sanitizing123123Asdf is a Sanitizing of type 123123-Asdf.", + (string) (len=21) "\tSanitizing123123Asdf", + (string) (len=66) "\t// SanitizingEndingHyphen is a Sanitizing of type Ending-Hyphen-.", + (string) (len=23) "\tSanitizingEndingHyphen", + (string) (len=1) ")", + (string) "", + (string) (len=112) "const _SanitizingName = \"test-hyphen-hyphenstart_underscorefirst0numberfirst123456789a123123-asdfending-hyphen-\"", + (string) "", + (string) (len=32) "var _SanitizingNames = []string{", + (string) (len=23) "\t_SanitizingName[0:11],", + (string) (len=24) "\t_SanitizingName[11:23],", + (string) (len=24) "\t_SanitizingName[23:39],", + (string) (len=24) "\t_SanitizingName[39:51],", + (string) (len=24) "\t_SanitizingName[51:61],", + (string) (len=24) "\t_SanitizingName[61:72],", + (string) (len=24) "\t_SanitizingName[72:86],", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// SanitizingNames returns a list of possible string values of Sanitizing.", + (string) (len=33) "func SanitizingNames() []string {", + (string) (len=45) "\ttmp := make([]string, len(_SanitizingNames))", + (string) (len=28) "\tcopy(tmp, _SanitizingNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", + (string) (len=51) "\tSanitizingTestHyphen: _SanitizingName[0:11],", + (string) (len=52) "\tSanitizingHyphenStart: _SanitizingName[11:23],", + (string) (len=52) "\tSanitizing_underscoreFirst: _SanitizingName[23:39],", + (string) (len=52) "\tSanitizing0numberFirst: _SanitizingName[39:51],", + (string) (len=52) "\tSanitizing123456789a: _SanitizingName[51:61],", + (string) (len=52) "\tSanitizing123123Asdf: _SanitizingName[61:72],", + (string) (len=52) "\tSanitizingEndingHyphen: _SanitizingName[72:86],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x Sanitizing) String() string {", + (string) (len=38) "\tif str, ok := _SanitizingMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", + (string) (len=63) "\t_SanitizingName[0:11]: SanitizingTestHyphen,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[0:11]): SanitizingTestHyphen,", + (string) (len=64) "\t_SanitizingName[11:23]: SanitizingHyphenStart,", + (string) (len=64) "\tstrings.ToLower(_SanitizingName[11:23]): SanitizingHyphenStart,", + (string) (len=69) "\t_SanitizingName[23:39]: Sanitizing_underscoreFirst,", + (string) (len=69) "\tstrings.ToLower(_SanitizingName[23:39]): Sanitizing_underscoreFirst,", + (string) (len=65) "\t_SanitizingName[39:51]: Sanitizing0numberFirst,", + (string) (len=65) "\tstrings.ToLower(_SanitizingName[39:51]): Sanitizing0numberFirst,", + (string) (len=63) "\t_SanitizingName[51:61]: Sanitizing123456789a,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[51:61]): Sanitizing123456789a,", + (string) (len=63) "\t_SanitizingName[61:72]: Sanitizing123123Asdf,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[61:72]): Sanitizing123123Asdf,", + (string) (len=65) "\t_SanitizingName[72:86]: SanitizingEndingHyphen,", + (string) (len=65) "\tstrings.ToLower(_SanitizingName[72:86]): SanitizingEndingHyphen,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseSanitizing attempts to convert a string to a Sanitizing.", + (string) (len=55) "func ParseSanitizing(name string) (Sanitizing, error) {", + (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=58) "\tif x, ok := _SanitizingValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=119) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing, try [%s]\", name, strings.Join(_SanitizingNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=85) "// MustParseSanitizing converts a string to a Sanitizing, and panics if is not valid.", + (string) (len=50) "func MustParseSanitizing(name string) Sanitizing {", + (string) (len=34) "\tval, err := ParseSanitizing(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x Sanitizing) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *Sanitizing) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=34) "\ttmp, err := ParseSanitizing(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=97) "var _SanitizingErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *Sanitizing) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=20) "\t\t*x = Sanitizing(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseSanitizing(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=38) "\t\t*x, err = ParseSanitizing(string(v))", + (string) (len=17) "\tcase Sanitizing:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=18) "\tcase *Sanitizing:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseSanitizing(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x Sanitizing) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=36) "func ParseSanitizingExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=36) "\t// SodaCoke is a Soda of type Coke.", + (string) (len=21) "\tSodaCoke Soda = iota", + (string) (len=38) "\t// SodaPepsi is a Soda of type Pepsi.", + (string) (len=10) "\tSodaPepsi", + (string) (len=40) "\t// SodaMtnDew is a Soda of type MtnDew.", + (string) (len=11) "\tSodaMtnDew", + (string) (len=1) ")", + (string) "", + (string) (len=35) "const _SodaName = \"cokepepsimtndew\"", + (string) "", + (string) (len=26) "var _SodaNames = []string{", + (string) (len=16) "\t_SodaName[0:4],", + (string) (len=16) "\t_SodaName[4:9],", + (string) (len=17) "\t_SodaName[9:15],", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// SodaNames returns a list of possible string values of Soda.", + (string) (len=27) "func SodaNames() []string {", + (string) (len=39) "\ttmp := make([]string, len(_SodaNames))", + (string) (len=22) "\tcopy(tmp, _SodaNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=31) "var _SodaMap = map[Soda]string{", + (string) (len=28) "\tSodaCoke: _SodaName[0:4],", + (string) (len=28) "\tSodaPepsi: _SodaName[4:9],", + (string) (len=29) "\tSodaMtnDew: _SodaName[9:15],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=31) "func (x Soda) String() string {", + (string) (len=32) "\tif str, ok := _SodaMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _SodaValue = map[string]Soda{", + (string) (len=44) "\t_SodaName[0:4]: SodaCoke,", + (string) (len=44) "\tstrings.ToLower(_SodaName[0:4]): SodaCoke,", + (string) (len=45) "\t_SodaName[4:9]: SodaPepsi,", + (string) (len=45) "\tstrings.ToLower(_SodaName[4:9]): SodaPepsi,", + (string) (len=46) "\t_SodaName[9:15]: SodaMtnDew,", + (string) (len=46) "\tstrings.ToLower(_SodaName[9:15]): SodaMtnDew,", + (string) (len=1) "}", + (string) "", + (string) (len=52) "// ParseSoda attempts to convert a string to a Soda.", + (string) (len=43) "func ParseSoda(name string) (Soda, error) {", + (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=52) "\tif x, ok := _SodaValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=101) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda, try [%s]\", name, strings.Join(_SodaNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=73) "// MustParseSoda converts a string to a Soda, and panics if is not valid.", + (string) (len=38) "func MustParseSoda(name string) Soda {", + (string) (len=28) "\tval, err := ParseSoda(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=45) "func (x Soda) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=49) "func (x *Soda) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=28) "\ttmp, err := ParseSoda(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=91) "var _SodaErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=52) "func (x *Soda) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=14) "\t\t*x = Soda(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=13) "\tcase string:", + (string) (len=24) "\t\t*x, err = ParseSoda(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=32) "\t\t*x, err = ParseSoda(string(v))", + (string) (len=11) "\tcase Soda:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=12) "\tcase *Soda:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=25) "\t\t*x, err = ParseSoda(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=45) "func (x Soda) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=30) "func ParseSodaExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=68) "\t// StartNotZeroStartWithNum is a StartNotZero of type StartWithNum.", + (string) (len=50) "\tStartNotZeroStartWithNum StartNotZero = iota + 23", + (string) (len=58) "\t// StartNotZeroNextNum is a StartNotZero of type NextNum.", + (string) (len=20) "\tStartNotZeroNextNum", + (string) (len=1) ")", + (string) "", + (string) (len=47) "const _StartNotZeroName = \"startwithnumnextnum\"", + (string) "", + (string) (len=34) "var _StartNotZeroNames = []string{", + (string) (len=25) "\t_StartNotZeroName[0:12],", + (string) (len=26) "\t_StartNotZeroName[12:19],", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// StartNotZeroNames returns a list of possible string values of StartNotZero.", + (string) (len=35) "func StartNotZeroNames() []string {", + (string) (len=47) "\ttmp := make([]string, len(_StartNotZeroNames))", + (string) (len=30) "\tcopy(tmp, _StartNotZeroNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", + (string) (len=51) "\tStartNotZeroStartWithNum: _StartNotZeroName[0:12],", + (string) (len=52) "\tStartNotZeroNextNum: _StartNotZeroName[12:19],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=39) "func (x StartNotZero) String() string {", + (string) (len=40) "\tif str, ok := _StartNotZeroMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", + (string) (len=69) "\t_StartNotZeroName[0:12]: StartNotZeroStartWithNum,", + (string) (len=69) "\tstrings.ToLower(_StartNotZeroName[0:12]): StartNotZeroStartWithNum,", + (string) (len=64) "\t_StartNotZeroName[12:19]: StartNotZeroNextNum,", + (string) (len=64) "\tstrings.ToLower(_StartNotZeroName[12:19]): StartNotZeroNextNum,", + (string) (len=1) "}", + (string) "", + (string) (len=68) "// ParseStartNotZero attempts to convert a string to a StartNotZero.", + (string) (len=59) "func ParseStartNotZero(name string) (StartNotZero, error) {", + (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=60) "\tif x, ok := _StartNotZeroValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=125) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero, try [%s]\", name, strings.Join(_StartNotZeroNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=89) "// MustParseStartNotZero converts a string to a StartNotZero, and panics if is not valid.", + (string) (len=54) "func MustParseStartNotZero(name string) StartNotZero {", + (string) (len=36) "\tval, err := ParseStartNotZero(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=53) "func (x StartNotZero) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=57) "func (x *StartNotZero) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=36) "\ttmp, err := ParseStartNotZero(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=99) "var _StartNotZeroErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=60) "func (x *StartNotZero) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=22) "\t\t*x = StartNotZero(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=13) "\tcase string:", + (string) (len=32) "\t\t*x, err = ParseStartNotZero(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=40) "\t\t*x, err = ParseStartNotZero(string(v))", + (string) (len=19) "\tcase StartNotZero:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=20) "\tcase *StartNotZero:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=33) "\t\t*x, err = ParseStartNotZero(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=53) "func (x StartNotZero) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=38) "func ParseStartNotZeroExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "" +} diff --git a/generator/generator_test.go b/generator/generator_test.go index 9c20d17d..87415d86 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -67,6 +67,29 @@ func TestExampleFile(t *testing.T) { } } +// TestExampleFileMoreOptions +func TestExampleFileMoreOptions(t *testing.T) { + g := NewGenerator(). + WithMarshal(). + WithSQLDriver(). + WithCaseInsensitiveParse(). + WithNames(). + WithoutSnakeToCamel(). + WithMustParse(). + WithForceLower(). + WithTemplates(`../example/user_template.tmpl`) + // Parse the file given in arguments + imported, err := g.GenerateFromFile(testExample) + require.Nil(t, err, "Error generating formatted code") + + outputLines := strings.Split(string(imported), "\n") + cupaloy.SnapshotT(t, outputLines) + + if false { + fmt.Println(string(imported)) + } +} + // TestExampleFile func TestNoPrefixExampleFile(t *testing.T) { g := NewGenerator(). From 49489423dace823050c2893553f5b32168f3d4a9 Mon Sep 17 00:00:00 2001 From: Daniel Sonck Date: Wed, 15 Jun 2022 23:38:16 +0200 Subject: [PATCH 36/91] Fix ignoring text after closing ) also for single line ENUM (#111) Co-authored-by: Daniel Sonck --- generator/example_test.go | 2 +- generator/generator.go | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/generator/example_test.go b/generator/example_test.go index a6d4d33f..4f094736 100644 --- a/generator/example_test.go +++ b/generator/example_test.go @@ -21,7 +21,7 @@ type Color int // ) Some other line of info type Animal int32 -// Model x ENUM(Toyota,_,Chevy,_,Ford) +// Model x ENUM(Toyota,_,Chevy,_,Ford). type Model int32 /* ENUM( diff --git a/generator/generator.go b/generator/generator.go index 7a2af17a..c54dd64a 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -572,7 +572,14 @@ func breakCommentIntoLines(comment *ast.Comment) []string { // trimAllTheThings takes off all the cruft of a line that we don't need. func trimAllTheThings(thing string) string { - return strings.TrimSpace(strings.TrimSuffix(strings.TrimSuffix(strings.TrimSpace(thing), `,`), `)`)) + preTrimmed := strings.TrimSuffix(strings.TrimSpace(thing), `,`) + end := strings.Index(preTrimmed, `)`) + + if end < 0 { + end = len(preTrimmed) + } + + return strings.TrimSpace(preTrimmed[:end]) } // inspect will walk the ast and fill a map of names and their struct information From 2bf3f089be242a89fd1c9b5ff14fdcf937b944a5 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Fri, 17 Jun 2022 13:32:51 -0700 Subject: [PATCH 37/91] move examples folder (#112) * Remove the need for the examples repo to be tested --- Makefile | 4 +- README.md | 180 +- {example => _example}/animal.go | 0 {example => _example}/animal_enum.go | 0 {example => _example}/animal_test.go | 0 {example => _example}/color.go | 0 {example => _example}/color_enum.go | 0 {example => _example}/color_test.go | 0 {example => _example}/commented.go | 0 {example => _example}/commented_enum.go | 0 {example => _example}/commented_test.go | 0 {example => _example}/custom_prefix.go | 0 {example => _example}/custom_prefix_enum.go | 0 {example => _example}/custom_prefix_test.go | 0 {example => _example}/enum_32_bit.go | 0 {example => _example}/enum_32_bit_enum.go | 0 {example => _example}/enum_32_bit_test.go | 0 {example => _example}/enum_64_bit.go | 0 {example => _example}/enum_64_bit_enum.go | 0 {example => _example}/enum_64_bit_test.go | 0 {example => _example}/example.go | 0 {example => _example}/example_enum.go | 0 {example => _example}/example_test.go | 0 {example => _example}/force_lower.go | 0 {example => _example}/force_lower_enum.go | 0 {example => _example}/force_lower_test.go | 0 {example => _example}/globs/gen.go | 0 {example => _example}/globs/letter.go | 0 {example => _example}/globs/letter_enum.go | 0 {example => _example}/globs/number.go | 0 {example => _example}/globs/number_enum.go | 0 {example => _example}/negative.go | 0 {example => _example}/negative_enum.go | 0 {example => _example}/negative_test.go | 0 {example => _example}/sql.go | 0 {example => _example}/sql_1_11_test.go | 0 {example => _example}/sql_enum.go | 0 {example => _example}/sql_int.go | 0 {example => _example}/sql_int_enum.go | 0 {example => _example}/sql_int_enum_test.go | 0 {example => _example}/sql_mock_test.go | 0 {example => _example}/sql_str.go | 0 {example => _example}/sql_str_enum.go | 0 {example => _example}/sql_str_enum_test.go | 0 {example => _example}/sql_test.go | 0 {example => _example}/user_globbed.tmpl | 0 {example => _example}/user_globbed2.tmpl | 0 {example => _example}/user_template.go | 0 {example => _example}/user_template.tmpl | 0 {example => _example}/user_template_enum.go | 0 {example => _example}/user_template_test.go | 0 .../Test118ExampleFileMoreOptions-1.18 | 180 ++ .../Test118ExampleFileMoreOptions-og | 2379 +++++++++++++++++ generator/generator.go | 11 + generator/generator_1.18_test.go | 115 + generator/generator_test.go | 95 +- go.mod | 22 +- go.sum | 24 + 58 files changed, 2906 insertions(+), 104 deletions(-) rename {example => _example}/animal.go (100%) rename {example => _example}/animal_enum.go (100%) rename {example => _example}/animal_test.go (100%) rename {example => _example}/color.go (100%) rename {example => _example}/color_enum.go (100%) rename {example => _example}/color_test.go (100%) rename {example => _example}/commented.go (100%) rename {example => _example}/commented_enum.go (100%) rename {example => _example}/commented_test.go (100%) rename {example => _example}/custom_prefix.go (100%) rename {example => _example}/custom_prefix_enum.go (100%) rename {example => _example}/custom_prefix_test.go (100%) rename {example => _example}/enum_32_bit.go (100%) rename {example => _example}/enum_32_bit_enum.go (100%) rename {example => _example}/enum_32_bit_test.go (100%) rename {example => _example}/enum_64_bit.go (100%) rename {example => _example}/enum_64_bit_enum.go (100%) rename {example => _example}/enum_64_bit_test.go (100%) rename {example => _example}/example.go (100%) rename {example => _example}/example_enum.go (100%) rename {example => _example}/example_test.go (100%) rename {example => _example}/force_lower.go (100%) rename {example => _example}/force_lower_enum.go (100%) rename {example => _example}/force_lower_test.go (100%) rename {example => _example}/globs/gen.go (100%) rename {example => _example}/globs/letter.go (100%) rename {example => _example}/globs/letter_enum.go (100%) rename {example => _example}/globs/number.go (100%) rename {example => _example}/globs/number_enum.go (100%) rename {example => _example}/negative.go (100%) rename {example => _example}/negative_enum.go (100%) rename {example => _example}/negative_test.go (100%) rename {example => _example}/sql.go (100%) rename {example => _example}/sql_1_11_test.go (100%) rename {example => _example}/sql_enum.go (100%) rename {example => _example}/sql_int.go (100%) rename {example => _example}/sql_int_enum.go (100%) rename {example => _example}/sql_int_enum_test.go (100%) rename {example => _example}/sql_mock_test.go (100%) rename {example => _example}/sql_str.go (100%) rename {example => _example}/sql_str_enum.go (100%) rename {example => _example}/sql_str_enum_test.go (100%) rename {example => _example}/sql_test.go (100%) rename {example => _example}/user_globbed.tmpl (100%) rename {example => _example}/user_globbed2.tmpl (100%) rename {example => _example}/user_template.go (100%) rename {example => _example}/user_template.tmpl (100%) rename {example => _example}/user_template_enum.go (100%) rename {example => _example}/user_template_test.go (100%) create mode 100644 generator/.snapshots/Test118ExampleFileMoreOptions-1.18 create mode 100644 generator/.snapshots/Test118ExampleFileMoreOptions-og diff --git a/Makefile b/Makefile index 9a17b876..30fdc956 100644 --- a/Makefile +++ b/Makefile @@ -37,7 +37,7 @@ deps: $(MOCKGEN) deps: $(GOBINDATA) deps: $(GOIMPORTS) -PACKAGES='./generator' './example' +PACKAGES='./generator' './_example' .PHONY: all all: build fmt test example cover install @@ -88,7 +88,7 @@ phony: clean tc build .PHONY: example example: - $(GO) generate ./example/... + $(GO) generate ./_example/... bin/goimports: go.sum $(call goinstall,golang.org/x/tools/cmd/goimports) diff --git a/README.md b/README.md index d5a15bf0..85ae0ac7 100644 --- a/README.md +++ b/README.md @@ -21,16 +21,16 @@ and generate a file with the iota definition along various optional niceties tha ```go const ( - // ImageTypeJpeg is a ImageType of type Jpeg. - ImageTypeJpeg ImageType = iota - // ImageTypeJpg is a ImageType of type Jpg. - ImageTypeJpg - // ImageTypePng is a ImageType of type Png. - ImageTypePng - // ImageTypeTiff is a ImageType of type Tiff. - ImageTypeTiff - // ImageTypeGif is a ImageType of type Gif. - ImageTypeGif + // ImageTypeJpeg is a ImageType of type Jpeg. + ImageTypeJpeg ImageType = iota + // ImageTypeJpg is a ImageType of type Jpg. + ImageTypeJpg + // ImageTypePng is a ImageType of type Png. + ImageTypePng + // ImageTypeTiff is a ImageType of type Tiff. + ImageTypeTiff + // ImageTypeGif is a ImageType of type Gif. + ImageTypeGif ) // String implements the Stringer interface. @@ -80,10 +80,10 @@ I did not specify any overrides on the release binary names, so `uname -s` and ` If you prefer makefile stuff, you can always do something like this: ```Makefile -STANDARD_ENUMS = example/animal_enum.go \ - example/color_enum.go +STANDARD_ENUMS = ./_example/animal_enum.go \ + ./_example/color_enum.go -NULLABLE_ENUMS = example/sql_enum.go +NULLABLE_ENUMS = ./_example/sql_enum.go $(STANDARD_ENUMS): GO_ENUM_FLAGS=--nocase --marshal --names --ptr $(NULLABLE_ENUMS): GO_ENUM_FLAGS=--nocase --marshal --names --sqlnullint --ptr @@ -93,7 +93,7 @@ enums: $(STANDARD_ENUMS) $(NULLABLE_ENUMS) # The generator statement for go enum files. Files that invalidate the # enum file: source file, the binary itself, and this file (in case you want to generate with different flags) %_enum.go: %.go $(GOENUM) Makefile - $(GOENUM) -f $*.go $(GO_ENUM_FLAGS) + $(GOENUM) -f $*.go $(GO_ENUM_FLAGS) ``` ## Command options @@ -172,7 +172,7 @@ const ( #### Example -There are a few examples in the `example` [directory](example). +There are a few examples in the `_example` [directory](_example). I've included one here for easy access, but can't guarantee it's up to date. ``` go @@ -204,110 +204,110 @@ The generated code will look something like: package example import ( - "fmt" - "strings" + "fmt" + "strings" ) const ( - // ColorBlack is a Color of type Black. - ColorBlack Color = iota - // ColorWhite is a Color of type White. - ColorWhite - // ColorRed is a Color of type Red. - ColorRed - // ColorGreen is a Color of type Green. - // Green starts with 33 - ColorGreen Color = iota + 30 - // ColorBlue is a Color of type Blue. - ColorBlue - // ColorGrey is a Color of type Grey. - ColorGrey - // ColorYellow is a Color of type Yellow. - ColorYellow - // ColorBlueGreen is a Color of type Blue-Green. - ColorBlueGreen - // ColorRedOrange is a Color of type Red-Orange. - ColorRedOrange - // ColorYellowGreen is a Color of type Yellow_green. - ColorYellowGreen - // ColorRedOrangeBlue is a Color of type Red-Orange-Blue. - ColorRedOrangeBlue + // ColorBlack is a Color of type Black. + ColorBlack Color = iota + // ColorWhite is a Color of type White. + ColorWhite + // ColorRed is a Color of type Red. + ColorRed + // ColorGreen is a Color of type Green. + // Green starts with 33 + ColorGreen Color = iota + 30 + // ColorBlue is a Color of type Blue. + ColorBlue + // ColorGrey is a Color of type Grey. + ColorGrey + // ColorYellow is a Color of type Yellow. + ColorYellow + // ColorBlueGreen is a Color of type Blue-Green. + ColorBlueGreen + // ColorRedOrange is a Color of type Red-Orange. + ColorRedOrange + // ColorYellowGreen is a Color of type Yellow_green. + ColorYellowGreen + // ColorRedOrangeBlue is a Color of type Red-Orange-Blue. + ColorRedOrangeBlue ) const _ColorName = "BlackWhiteRedGreenBluegreyyellowblue-greenred-orangeyellow_greenred-orange-blue" var _ColorMap = map[Color]string{ - ColorBlack: _ColorName[0:5], - ColorWhite: _ColorName[5:10], - ColorRed: _ColorName[10:13], - ColorGreen: _ColorName[13:18], - ColorBlue: _ColorName[18:22], - ColorGrey: _ColorName[22:26], - ColorYellow: _ColorName[26:32], - ColorBlueGreen: _ColorName[32:42], - ColorRedOrange: _ColorName[42:52], - ColorYellowGreen: _ColorName[52:64], - ColorRedOrangeBlue: _ColorName[64:79], + ColorBlack: _ColorName[0:5], + ColorWhite: _ColorName[5:10], + ColorRed: _ColorName[10:13], + ColorGreen: _ColorName[13:18], + ColorBlue: _ColorName[18:22], + ColorGrey: _ColorName[22:26], + ColorYellow: _ColorName[26:32], + ColorBlueGreen: _ColorName[32:42], + ColorRedOrange: _ColorName[42:52], + ColorYellowGreen: _ColorName[52:64], + ColorRedOrangeBlue: _ColorName[64:79], } // String implements the Stringer interface. func (x Color) String() string { - if str, ok := _ColorMap[x]; ok { - return str - } - return fmt.Sprintf("Color(%d)", x) + if str, ok := _ColorMap[x]; ok { + return str + } + return fmt.Sprintf("Color(%d)", x) } var _ColorValue = map[string]Color{ - _ColorName[0:5]: ColorBlack, - strings.ToLower(_ColorName[0:5]): ColorBlack, - _ColorName[5:10]: ColorWhite, - strings.ToLower(_ColorName[5:10]): ColorWhite, - _ColorName[10:13]: ColorRed, - strings.ToLower(_ColorName[10:13]): ColorRed, - _ColorName[13:18]: ColorGreen, - strings.ToLower(_ColorName[13:18]): ColorGreen, - _ColorName[18:22]: ColorBlue, - strings.ToLower(_ColorName[18:22]): ColorBlue, - _ColorName[22:26]: ColorGrey, - strings.ToLower(_ColorName[22:26]): ColorGrey, - _ColorName[26:32]: ColorYellow, - strings.ToLower(_ColorName[26:32]): ColorYellow, - _ColorName[32:42]: ColorBlueGreen, - strings.ToLower(_ColorName[32:42]): ColorBlueGreen, - _ColorName[42:52]: ColorRedOrange, - strings.ToLower(_ColorName[42:52]): ColorRedOrange, - _ColorName[52:64]: ColorYellowGreen, - strings.ToLower(_ColorName[52:64]): ColorYellowGreen, - _ColorName[64:79]: ColorRedOrangeBlue, - strings.ToLower(_ColorName[64:79]): ColorRedOrangeBlue, + _ColorName[0:5]: ColorBlack, + strings.ToLower(_ColorName[0:5]): ColorBlack, + _ColorName[5:10]: ColorWhite, + strings.ToLower(_ColorName[5:10]): ColorWhite, + _ColorName[10:13]: ColorRed, + strings.ToLower(_ColorName[10:13]): ColorRed, + _ColorName[13:18]: ColorGreen, + strings.ToLower(_ColorName[13:18]): ColorGreen, + _ColorName[18:22]: ColorBlue, + strings.ToLower(_ColorName[18:22]): ColorBlue, + _ColorName[22:26]: ColorGrey, + strings.ToLower(_ColorName[22:26]): ColorGrey, + _ColorName[26:32]: ColorYellow, + strings.ToLower(_ColorName[26:32]): ColorYellow, + _ColorName[32:42]: ColorBlueGreen, + strings.ToLower(_ColorName[32:42]): ColorBlueGreen, + _ColorName[42:52]: ColorRedOrange, + strings.ToLower(_ColorName[42:52]): ColorRedOrange, + _ColorName[52:64]: ColorYellowGreen, + strings.ToLower(_ColorName[52:64]): ColorYellowGreen, + _ColorName[64:79]: ColorRedOrangeBlue, + strings.ToLower(_ColorName[64:79]): ColorRedOrangeBlue, } // ParseColor attempts to convert a string to a Color func ParseColor(name string) (Color, error) { - if x, ok := _ColorValue[name]; ok { - return x, nil - } - return Color(0), fmt.Errorf("%s is not a valid Color", name) + if x, ok := _ColorValue[name]; ok { + return x, nil + } + return Color(0), fmt.Errorf("%s is not a valid Color", name) } func (x Color) Ptr() *Color { - return &x + return &x } // MarshalText implements the text marshaller method func (x Color) MarshalText() ([]byte, error) { - return []byte(x.String()), nil + return []byte(x.String()), nil } // UnmarshalText implements the text unmarshaller method func (x *Color) UnmarshalText(text []byte) error { - name := string(text) - tmp, err := ParseColor(name) - if err != nil { - return err - } - *x = tmp - return nil + name := string(text) + tmp, err := ParseColor(name) + if err != nil { + return err + } + *x = tmp + return nil } ``` diff --git a/example/animal.go b/_example/animal.go similarity index 100% rename from example/animal.go rename to _example/animal.go diff --git a/example/animal_enum.go b/_example/animal_enum.go similarity index 100% rename from example/animal_enum.go rename to _example/animal_enum.go diff --git a/example/animal_test.go b/_example/animal_test.go similarity index 100% rename from example/animal_test.go rename to _example/animal_test.go diff --git a/example/color.go b/_example/color.go similarity index 100% rename from example/color.go rename to _example/color.go diff --git a/example/color_enum.go b/_example/color_enum.go similarity index 100% rename from example/color_enum.go rename to _example/color_enum.go diff --git a/example/color_test.go b/_example/color_test.go similarity index 100% rename from example/color_test.go rename to _example/color_test.go diff --git a/example/commented.go b/_example/commented.go similarity index 100% rename from example/commented.go rename to _example/commented.go diff --git a/example/commented_enum.go b/_example/commented_enum.go similarity index 100% rename from example/commented_enum.go rename to _example/commented_enum.go diff --git a/example/commented_test.go b/_example/commented_test.go similarity index 100% rename from example/commented_test.go rename to _example/commented_test.go diff --git a/example/custom_prefix.go b/_example/custom_prefix.go similarity index 100% rename from example/custom_prefix.go rename to _example/custom_prefix.go diff --git a/example/custom_prefix_enum.go b/_example/custom_prefix_enum.go similarity index 100% rename from example/custom_prefix_enum.go rename to _example/custom_prefix_enum.go diff --git a/example/custom_prefix_test.go b/_example/custom_prefix_test.go similarity index 100% rename from example/custom_prefix_test.go rename to _example/custom_prefix_test.go diff --git a/example/enum_32_bit.go b/_example/enum_32_bit.go similarity index 100% rename from example/enum_32_bit.go rename to _example/enum_32_bit.go diff --git a/example/enum_32_bit_enum.go b/_example/enum_32_bit_enum.go similarity index 100% rename from example/enum_32_bit_enum.go rename to _example/enum_32_bit_enum.go diff --git a/example/enum_32_bit_test.go b/_example/enum_32_bit_test.go similarity index 100% rename from example/enum_32_bit_test.go rename to _example/enum_32_bit_test.go diff --git a/example/enum_64_bit.go b/_example/enum_64_bit.go similarity index 100% rename from example/enum_64_bit.go rename to _example/enum_64_bit.go diff --git a/example/enum_64_bit_enum.go b/_example/enum_64_bit_enum.go similarity index 100% rename from example/enum_64_bit_enum.go rename to _example/enum_64_bit_enum.go diff --git a/example/enum_64_bit_test.go b/_example/enum_64_bit_test.go similarity index 100% rename from example/enum_64_bit_test.go rename to _example/enum_64_bit_test.go diff --git a/example/example.go b/_example/example.go similarity index 100% rename from example/example.go rename to _example/example.go diff --git a/example/example_enum.go b/_example/example_enum.go similarity index 100% rename from example/example_enum.go rename to _example/example_enum.go diff --git a/example/example_test.go b/_example/example_test.go similarity index 100% rename from example/example_test.go rename to _example/example_test.go diff --git a/example/force_lower.go b/_example/force_lower.go similarity index 100% rename from example/force_lower.go rename to _example/force_lower.go diff --git a/example/force_lower_enum.go b/_example/force_lower_enum.go similarity index 100% rename from example/force_lower_enum.go rename to _example/force_lower_enum.go diff --git a/example/force_lower_test.go b/_example/force_lower_test.go similarity index 100% rename from example/force_lower_test.go rename to _example/force_lower_test.go diff --git a/example/globs/gen.go b/_example/globs/gen.go similarity index 100% rename from example/globs/gen.go rename to _example/globs/gen.go diff --git a/example/globs/letter.go b/_example/globs/letter.go similarity index 100% rename from example/globs/letter.go rename to _example/globs/letter.go diff --git a/example/globs/letter_enum.go b/_example/globs/letter_enum.go similarity index 100% rename from example/globs/letter_enum.go rename to _example/globs/letter_enum.go diff --git a/example/globs/number.go b/_example/globs/number.go similarity index 100% rename from example/globs/number.go rename to _example/globs/number.go diff --git a/example/globs/number_enum.go b/_example/globs/number_enum.go similarity index 100% rename from example/globs/number_enum.go rename to _example/globs/number_enum.go diff --git a/example/negative.go b/_example/negative.go similarity index 100% rename from example/negative.go rename to _example/negative.go diff --git a/example/negative_enum.go b/_example/negative_enum.go similarity index 100% rename from example/negative_enum.go rename to _example/negative_enum.go diff --git a/example/negative_test.go b/_example/negative_test.go similarity index 100% rename from example/negative_test.go rename to _example/negative_test.go diff --git a/example/sql.go b/_example/sql.go similarity index 100% rename from example/sql.go rename to _example/sql.go diff --git a/example/sql_1_11_test.go b/_example/sql_1_11_test.go similarity index 100% rename from example/sql_1_11_test.go rename to _example/sql_1_11_test.go diff --git a/example/sql_enum.go b/_example/sql_enum.go similarity index 100% rename from example/sql_enum.go rename to _example/sql_enum.go diff --git a/example/sql_int.go b/_example/sql_int.go similarity index 100% rename from example/sql_int.go rename to _example/sql_int.go diff --git a/example/sql_int_enum.go b/_example/sql_int_enum.go similarity index 100% rename from example/sql_int_enum.go rename to _example/sql_int_enum.go diff --git a/example/sql_int_enum_test.go b/_example/sql_int_enum_test.go similarity index 100% rename from example/sql_int_enum_test.go rename to _example/sql_int_enum_test.go diff --git a/example/sql_mock_test.go b/_example/sql_mock_test.go similarity index 100% rename from example/sql_mock_test.go rename to _example/sql_mock_test.go diff --git a/example/sql_str.go b/_example/sql_str.go similarity index 100% rename from example/sql_str.go rename to _example/sql_str.go diff --git a/example/sql_str_enum.go b/_example/sql_str_enum.go similarity index 100% rename from example/sql_str_enum.go rename to _example/sql_str_enum.go diff --git a/example/sql_str_enum_test.go b/_example/sql_str_enum_test.go similarity index 100% rename from example/sql_str_enum_test.go rename to _example/sql_str_enum_test.go diff --git a/example/sql_test.go b/_example/sql_test.go similarity index 100% rename from example/sql_test.go rename to _example/sql_test.go diff --git a/example/user_globbed.tmpl b/_example/user_globbed.tmpl similarity index 100% rename from example/user_globbed.tmpl rename to _example/user_globbed.tmpl diff --git a/example/user_globbed2.tmpl b/_example/user_globbed2.tmpl similarity index 100% rename from example/user_globbed2.tmpl rename to _example/user_globbed2.tmpl diff --git a/example/user_template.go b/_example/user_template.go similarity index 100% rename from example/user_template.go rename to _example/user_template.go diff --git a/example/user_template.tmpl b/_example/user_template.tmpl similarity index 100% rename from example/user_template.tmpl rename to _example/user_template.tmpl diff --git a/example/user_template_enum.go b/_example/user_template_enum.go similarity index 100% rename from example/user_template_enum.go rename to _example/user_template_enum.go diff --git a/example/user_template_test.go b/_example/user_template_test.go similarity index 100% rename from example/user_template_test.go rename to _example/user_template_test.go diff --git a/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 b/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 new file mode 100644 index 00000000..b55dfa15 --- /dev/null +++ b/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 @@ -0,0 +1,180 @@ +([]string) (len=178) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", + (string) "", + (string) (len=17) "package generator", + (string) "", + (string) (len=8) "import (", + (string) (len=22) "\t\"database/sql/driver\"", + (string) (len=6) "\t\"fmt\"", + (string) (len=10) "\t\"strings\"", + (string) "", + (string) (len=24) "\t\"github.com/pkg/errors\"", + (string) (len=1) ")", + (string) "", + (string) (len=7) "const (", + (string) (len=52) "\t// ChangeTypeCreate is a ChangeType of type Create.", + (string) (len=35) "\tChangeTypeCreate ChangeType = iota", + (string) (len=52) "\t// ChangeTypeUpdate is a ChangeType of type Update.", + (string) (len=17) "\tChangeTypeUpdate", + (string) (len=52) "\t// ChangeTypeDelete is a ChangeType of type Delete.", + (string) (len=17) "\tChangeTypeDelete", + (string) (len=1) ")", + (string) "", + (string) (len=44) "const _ChangeTypeName = \"createupdatedelete\"", + (string) "", + (string) (len=32) "var _ChangeTypeNames = []string{", + (string) (len=22) "\t_ChangeTypeName[0:6],", + (string) (len=23) "\t_ChangeTypeName[6:12],", + (string) (len=24) "\t_ChangeTypeName[12:18],", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// ChangeTypeNames returns a list of possible string values of ChangeType.", + (string) (len=33) "func ChangeTypeNames() []string {", + (string) (len=45) "\ttmp := make([]string, len(_ChangeTypeNames))", + (string) (len=28) "\tcopy(tmp, _ChangeTypeNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _ChangeTypeMap = map[ChangeType]string{", + (string) (len=40) "\tChangeTypeCreate: _ChangeTypeName[0:6],", + (string) (len=41) "\tChangeTypeUpdate: _ChangeTypeName[6:12],", + (string) (len=42) "\tChangeTypeDelete: _ChangeTypeName[12:18],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x ChangeType) String() string {", + (string) (len=38) "\tif str, ok := _ChangeTypeMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=40) "\treturn fmt.Sprintf(\"ChangeType(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _ChangeTypeValue = map[string]ChangeType{", + (string) (len=59) "\t_ChangeTypeName[0:6]: ChangeTypeCreate,", + (string) (len=59) "\tstrings.ToLower(_ChangeTypeName[0:6]): ChangeTypeCreate,", + (string) (len=59) "\t_ChangeTypeName[6:12]: ChangeTypeUpdate,", + (string) (len=59) "\tstrings.ToLower(_ChangeTypeName[6:12]): ChangeTypeUpdate,", + (string) (len=59) "\t_ChangeTypeName[12:18]: ChangeTypeDelete,", + (string) (len=59) "\tstrings.ToLower(_ChangeTypeName[12:18]): ChangeTypeDelete,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseChangeType attempts to convert a string to a ChangeType.", + (string) (len=55) "func ParseChangeType(name string) (ChangeType, error) {", + (string) (len=41) "\tif x, ok := _ChangeTypeValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=58) "\tif x, ok := _ChangeTypeValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=119) "\treturn ChangeType(0), fmt.Errorf(\"%s is not a valid ChangeType, try [%s]\", name, strings.Join(_ChangeTypeNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=85) "// MustParseChangeType converts a string to a ChangeType, and panics if is not valid.", + (string) (len=50) "func MustParseChangeType(name string) ChangeType {", + (string) (len=34) "\tval, err := ParseChangeType(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x ChangeType) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *ChangeType) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=34) "\ttmp, err := ParseChangeType(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=97) "var _ChangeTypeErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *ChangeType) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=20) "\t\t*x = ChangeType(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=20) "\t\t*x = ChangeType(v)", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseChangeType(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=38) "\t\t*x, err = ParseChangeType(string(v))", + (string) (len=17) "\tcase ChangeType:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=20) "\t\t*x = ChangeType(v)", + (string) (len=18) "\tcase *ChangeType:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=20) "\t\t*x = ChangeType(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=20) "\t\t*x = ChangeType(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = ChangeType(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = ChangeType(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=20) "\t\t*x = ChangeType(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = ChangeType(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = ChangeType(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = ChangeType(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseChangeType(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x ChangeType) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=36) "func ParseChangeTypeExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "" +} diff --git a/generator/.snapshots/Test118ExampleFileMoreOptions-og b/generator/.snapshots/Test118ExampleFileMoreOptions-og new file mode 100644 index 00000000..b334af43 --- /dev/null +++ b/generator/.snapshots/Test118ExampleFileMoreOptions-og @@ -0,0 +1,2379 @@ +([]string) (len=2377) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", + (string) "", + (string) (len=17) "package generator", + (string) "", + (string) (len=8) "import (", + (string) (len=22) "\t\"database/sql/driver\"", + (string) (len=6) "\t\"fmt\"", + (string) (len=10) "\t\"strings\"", + (string) "", + (string) (len=24) "\t\"github.com/pkg/errors\"", + (string) (len=1) ")", + (string) "", + (string) (len=7) "const (", + (string) (len=38) "\t// AnimalCat is a Animal of type Cat.", + (string) (len=24) "\tAnimalCat Animal = iota", + (string) (len=38) "\t// AnimalDog is a Animal of type Dog.", + (string) (len=10) "\tAnimalDog", + (string) (len=40) "\t// AnimalFish is a Animal of type Fish.", + (string) (len=11) "\tAnimalFish", + (string) (len=1) ")", + (string) "", + (string) (len=32) "const _AnimalName = \"catdogfish\"", + (string) "", + (string) (len=28) "var _AnimalNames = []string{", + (string) (len=18) "\t_AnimalName[0:3],", + (string) (len=18) "\t_AnimalName[3:6],", + (string) (len=19) "\t_AnimalName[6:10],", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// AnimalNames returns a list of possible string values of Animal.", + (string) (len=29) "func AnimalNames() []string {", + (string) (len=41) "\ttmp := make([]string, len(_AnimalNames))", + (string) (len=24) "\tcopy(tmp, _AnimalNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _AnimalMap = map[Animal]string{", + (string) (len=30) "\tAnimalCat: _AnimalName[0:3],", + (string) (len=30) "\tAnimalDog: _AnimalName[3:6],", + (string) (len=31) "\tAnimalFish: _AnimalName[6:10],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=33) "func (x Animal) String() string {", + (string) (len=34) "\tif str, ok := _AnimalMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=37) "var _AnimalValue = map[string]Animal{", + (string) (len=47) "\t_AnimalName[0:3]: AnimalCat,", + (string) (len=47) "\tstrings.ToLower(_AnimalName[0:3]): AnimalCat,", + (string) (len=47) "\t_AnimalName[3:6]: AnimalDog,", + (string) (len=47) "\tstrings.ToLower(_AnimalName[3:6]): AnimalDog,", + (string) (len=48) "\t_AnimalName[6:10]: AnimalFish,", + (string) (len=48) "\tstrings.ToLower(_AnimalName[6:10]): AnimalFish,", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// ParseAnimal attempts to convert a string to a Animal.", + (string) (len=47) "func ParseAnimal(name string) (Animal, error) {", + (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=54) "\tif x, ok := _AnimalValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=107) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal, try [%s]\", name, strings.Join(_AnimalNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=77) "// MustParseAnimal converts a string to a Animal, and panics if is not valid.", + (string) (len=42) "func MustParseAnimal(name string) Animal {", + (string) (len=30) "\tval, err := ParseAnimal(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=47) "func (x Animal) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=51) "func (x *Animal) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=30) "\ttmp, err := ParseAnimal(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=93) "var _AnimalErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=54) "func (x *Animal) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=16) "\t\t*x = Animal(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=13) "\tcase string:", + (string) (len=26) "\t\t*x, err = ParseAnimal(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=34) "\t\t*x, err = ParseAnimal(string(v))", + (string) (len=13) "\tcase Animal:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=14) "\tcase *Animal:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x, err = ParseAnimal(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=47) "func (x Animal) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=32) "func ParseAnimalExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=50) "\t// CasesTest_lower is a Cases of type Test_lower.", + (string) (len=29) "\tCasesTest_lower Cases = iota", + (string) (len=54) "\t// CasesTest_capital is a Cases of type Test_capital.", + (string) (len=18) "\tCasesTest_capital", + (string) (len=72) "\t// CasesAnotherLowerCaseStart is a Cases of type AnotherLowerCaseStart.", + (string) (len=27) "\tCasesAnotherLowerCaseStart", + (string) (len=1) ")", + (string) "", + (string) (len=64) "const _CasesName = \"test_lowertest_capitalanotherlowercasestart\"", + (string) "", + (string) (len=27) "var _CasesNames = []string{", + (string) (len=18) "\t_CasesName[0:10],", + (string) (len=19) "\t_CasesName[10:22],", + (string) (len=19) "\t_CasesName[22:43],", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// CasesNames returns a list of possible string values of Cases.", + (string) (len=28) "func CasesNames() []string {", + (string) (len=40) "\ttmp := make([]string, len(_CasesNames))", + (string) (len=23) "\tcopy(tmp, _CasesNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _CasesMap = map[Cases]string{", + (string) (len=46) "\tCasesTest_lower: _CasesName[0:10],", + (string) (len=47) "\tCasesTest_capital: _CasesName[10:22],", + (string) (len=47) "\tCasesAnotherLowerCaseStart: _CasesName[22:43],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Cases) String() string {", + (string) (len=33) "\tif str, ok := _CasesMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _CasesValue = map[string]Cases{", + (string) (len=53) "\t_CasesName[0:10]: CasesTest_lower,", + (string) (len=53) "\tstrings.ToLower(_CasesName[0:10]): CasesTest_lower,", + (string) (len=55) "\t_CasesName[10:22]: CasesTest_capital,", + (string) (len=55) "\tstrings.ToLower(_CasesName[10:22]): CasesTest_capital,", + (string) (len=64) "\t_CasesName[22:43]: CasesAnotherLowerCaseStart,", + (string) (len=64) "\tstrings.ToLower(_CasesName[22:43]): CasesAnotherLowerCaseStart,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseCases attempts to convert a string to a Cases.", + (string) (len=45) "func ParseCases(name string) (Cases, error) {", + (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=53) "\tif x, ok := _CasesValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=104) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases, try [%s]\", name, strings.Join(_CasesNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=75) "// MustParseCases converts a string to a Cases, and panics if is not valid.", + (string) (len=40) "func MustParseCases(name string) Cases {", + (string) (len=29) "\tval, err := ParseCases(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Cases) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Cases) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseCases(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=92) "var _CasesErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=53) "func (x *Cases) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=15) "\t\t*x = Cases(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=13) "\tcase string:", + (string) (len=25) "\t\t*x, err = ParseCases(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=33) "\t\t*x, err = ParseCases(string(v))", + (string) (len=12) "\tcase Cases:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=13) "\tcase *Cases:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=26) "\t\t*x, err = ParseCases(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=46) "func (x Cases) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=31) "func ParseCasesExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=40) "\t// ColorBlack is a Color of type Black.", + (string) (len=24) "\tColorBlack Color = iota", + (string) (len=40) "\t// ColorWhite is a Color of type White.", + (string) (len=11) "\tColorWhite", + (string) (len=36) "\t// ColorRed is a Color of type Red.", + (string) (len=9) "\tColorRed", + (string) (len=40) "\t// ColorGreen is a Color of type Green.", + (string) (len=11) "\tColorGreen", + (string) (len=38) "\t// ColorBlue is a Color of type Blue.", + (string) (len=28) "\tColorBlue Color = iota + 29", + (string) (len=38) "\t// ColorGrey is a Color of type Grey.", + (string) (len=10) "\tColorGrey", + (string) (len=42) "\t// ColorYellow is a Color of type Yellow.", + (string) (len=12) "\tColorYellow", + (string) (len=1) ")", + (string) "", + (string) (len=53) "const _ColorName = \"blackwhiteredgreenbluegreyyellow\"", + (string) "", + (string) (len=27) "var _ColorNames = []string{", + (string) (len=17) "\t_ColorName[0:5],", + (string) (len=18) "\t_ColorName[5:10],", + (string) (len=19) "\t_ColorName[10:13],", + (string) (len=19) "\t_ColorName[13:18],", + (string) (len=19) "\t_ColorName[18:22],", + (string) (len=19) "\t_ColorName[22:26],", + (string) (len=19) "\t_ColorName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ColorNames returns a list of possible string values of Color.", + (string) (len=28) "func ColorNames() []string {", + (string) (len=40) "\ttmp := make([]string, len(_ColorNames))", + (string) (len=23) "\tcopy(tmp, _ColorNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _ColorMap = map[Color]string{", + (string) (len=30) "\tColorBlack: _ColorName[0:5],", + (string) (len=31) "\tColorWhite: _ColorName[5:10],", + (string) (len=32) "\tColorRed: _ColorName[10:13],", + (string) (len=32) "\tColorGreen: _ColorName[13:18],", + (string) (len=32) "\tColorBlue: _ColorName[18:22],", + (string) (len=32) "\tColorGrey: _ColorName[22:26],", + (string) (len=32) "\tColorYellow: _ColorName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Color) String() string {", + (string) (len=33) "\tif str, ok := _ColorMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _ColorValue = map[string]Color{", + (string) (len=48) "\t_ColorName[0:5]: ColorBlack,", + (string) (len=48) "\tstrings.ToLower(_ColorName[0:5]): ColorBlack,", + (string) (len=48) "\t_ColorName[5:10]: ColorWhite,", + (string) (len=48) "\tstrings.ToLower(_ColorName[5:10]): ColorWhite,", + (string) (len=46) "\t_ColorName[10:13]: ColorRed,", + (string) (len=46) "\tstrings.ToLower(_ColorName[10:13]): ColorRed,", + (string) (len=48) "\t_ColorName[13:18]: ColorGreen,", + (string) (len=48) "\tstrings.ToLower(_ColorName[13:18]): ColorGreen,", + (string) (len=47) "\t_ColorName[18:22]: ColorBlue,", + (string) (len=47) "\tstrings.ToLower(_ColorName[18:22]): ColorBlue,", + (string) (len=47) "\t_ColorName[22:26]: ColorGrey,", + (string) (len=47) "\tstrings.ToLower(_ColorName[22:26]): ColorGrey,", + (string) (len=49) "\t_ColorName[26:32]: ColorYellow,", + (string) (len=49) "\tstrings.ToLower(_ColorName[26:32]): ColorYellow,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseColor attempts to convert a string to a Color.", + (string) (len=45) "func ParseColor(name string) (Color, error) {", + (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=53) "\tif x, ok := _ColorValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=104) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color, try [%s]\", name, strings.Join(_ColorNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=75) "// MustParseColor converts a string to a Color, and panics if is not valid.", + (string) (len=40) "func MustParseColor(name string) Color {", + (string) (len=29) "\tval, err := ParseColor(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Color) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Color) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseColor(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=92) "var _ColorErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=53) "func (x *Color) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=15) "\t\t*x = Color(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=13) "\tcase string:", + (string) (len=25) "\t\t*x, err = ParseColor(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=33) "\t\t*x, err = ParseColor(string(v))", + (string) (len=12) "\tcase Color:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=13) "\tcase *Color:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=26) "\t\t*x, err = ParseColor(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=46) "func (x Color) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=31) "func ParseColorExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=62) "\t// ColorWithCommentBlack is a ColorWithComment of type Black.", + (string) (len=46) "\tColorWithCommentBlack ColorWithComment = iota", + (string) (len=62) "\t// ColorWithCommentWhite is a ColorWithComment of type White.", + (string) (len=22) "\tColorWithCommentWhite", + (string) (len=58) "\t// ColorWithCommentRed is a ColorWithComment of type Red.", + (string) (len=20) "\tColorWithCommentRed", + (string) (len=62) "\t// ColorWithCommentGreen is a ColorWithComment of type Green.", + (string) (len=22) "\tColorWithCommentGreen", + (string) (len=60) "\t// ColorWithCommentBlue is a ColorWithComment of type Blue.", + (string) (len=24) "\t// Blue starts with 33.", + (string) (len=50) "\tColorWithCommentBlue ColorWithComment = iota + 29", + (string) (len=60) "\t// ColorWithCommentGrey is a ColorWithComment of type Grey.", + (string) (len=21) "\tColorWithCommentGrey", + (string) (len=64) "\t// ColorWithCommentYellow is a ColorWithComment of type Yellow.", + (string) (len=23) "\tColorWithCommentYellow", + (string) (len=1) ")", + (string) "", + (string) (len=64) "const _ColorWithCommentName = \"blackwhiteredgreenbluegreyyellow\"", + (string) "", + (string) (len=38) "var _ColorWithCommentNames = []string{", + (string) (len=28) "\t_ColorWithCommentName[0:5],", + (string) (len=29) "\t_ColorWithCommentName[5:10],", + (string) (len=30) "\t_ColorWithCommentName[10:13],", + (string) (len=30) "\t_ColorWithCommentName[13:18],", + (string) (len=30) "\t_ColorWithCommentName[18:22],", + (string) (len=30) "\t_ColorWithCommentName[22:26],", + (string) (len=30) "\t_ColorWithCommentName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=86) "// ColorWithCommentNames returns a list of possible string values of ColorWithComment.", + (string) (len=39) "func ColorWithCommentNames() []string {", + (string) (len=51) "\ttmp := make([]string, len(_ColorWithCommentNames))", + (string) (len=34) "\tcopy(tmp, _ColorWithCommentNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", + (string) (len=52) "\tColorWithCommentBlack: _ColorWithCommentName[0:5],", + (string) (len=53) "\tColorWithCommentWhite: _ColorWithCommentName[5:10],", + (string) (len=54) "\tColorWithCommentRed: _ColorWithCommentName[10:13],", + (string) (len=54) "\tColorWithCommentGreen: _ColorWithCommentName[13:18],", + (string) (len=54) "\tColorWithCommentBlue: _ColorWithCommentName[18:22],", + (string) (len=54) "\tColorWithCommentGrey: _ColorWithCommentName[22:26],", + (string) (len=54) "\tColorWithCommentYellow: _ColorWithCommentName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=43) "func (x ColorWithComment) String() string {", + (string) (len=44) "\tif str, ok := _ColorWithCommentMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", + (string) (len=70) "\t_ColorWithCommentName[0:5]: ColorWithCommentBlack,", + (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[0:5]): ColorWithCommentBlack,", + (string) (len=70) "\t_ColorWithCommentName[5:10]: ColorWithCommentWhite,", + (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[5:10]): ColorWithCommentWhite,", + (string) (len=68) "\t_ColorWithCommentName[10:13]: ColorWithCommentRed,", + (string) (len=68) "\tstrings.ToLower(_ColorWithCommentName[10:13]): ColorWithCommentRed,", + (string) (len=70) "\t_ColorWithCommentName[13:18]: ColorWithCommentGreen,", + (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[13:18]): ColorWithCommentGreen,", + (string) (len=69) "\t_ColorWithCommentName[18:22]: ColorWithCommentBlue,", + (string) (len=69) "\tstrings.ToLower(_ColorWithCommentName[18:22]): ColorWithCommentBlue,", + (string) (len=69) "\t_ColorWithCommentName[22:26]: ColorWithCommentGrey,", + (string) (len=69) "\tstrings.ToLower(_ColorWithCommentName[22:26]): ColorWithCommentGrey,", + (string) (len=71) "\t_ColorWithCommentName[26:32]: ColorWithCommentYellow,", + (string) (len=71) "\tstrings.ToLower(_ColorWithCommentName[26:32]): ColorWithCommentYellow,", + (string) (len=1) "}", + (string) "", + (string) (len=76) "// ParseColorWithComment attempts to convert a string to a ColorWithComment.", + (string) (len=67) "func ParseColorWithComment(name string) (ColorWithComment, error) {", + (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=64) "\tif x, ok := _ColorWithCommentValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=137) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment, try [%s]\", name, strings.Join(_ColorWithCommentNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=97) "// MustParseColorWithComment converts a string to a ColorWithComment, and panics if is not valid.", + (string) (len=62) "func MustParseColorWithComment(name string) ColorWithComment {", + (string) (len=40) "\tval, err := ParseColorWithComment(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=57) "func (x ColorWithComment) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=61) "func (x *ColorWithComment) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=40) "\ttmp, err := ParseColorWithComment(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=103) "var _ColorWithCommentErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=64) "func (x *ColorWithComment) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=26) "\t\t*x = ColorWithComment(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=13) "\tcase string:", + (string) (len=36) "\t\t*x, err = ParseColorWithComment(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=44) "\t\t*x, err = ParseColorWithComment(string(v))", + (string) (len=23) "\tcase ColorWithComment:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=24) "\tcase *ColorWithComment:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=37) "\t\t*x, err = ParseColorWithComment(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=57) "func (x ColorWithComment) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=42) "func ParseColorWithCommentExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=64) "\t// ColorWithComment2Black is a ColorWithComment2 of type Black.", + (string) (len=48) "\tColorWithComment2Black ColorWithComment2 = iota", + (string) (len=64) "\t// ColorWithComment2White is a ColorWithComment2 of type White.", + (string) (len=23) "\tColorWithComment2White", + (string) (len=60) "\t// ColorWithComment2Red is a ColorWithComment2 of type Red.", + (string) (len=21) "\tColorWithComment2Red", + (string) (len=64) "\t// ColorWithComment2Green is a ColorWithComment2 of type Green.", + (string) (len=23) "\tColorWithComment2Green", + (string) (len=62) "\t// ColorWithComment2Blue is a ColorWithComment2 of type Blue.", + (string) (len=23) "\t// Blue starts with 33", + (string) (len=52) "\tColorWithComment2Blue ColorWithComment2 = iota + 29", + (string) (len=62) "\t// ColorWithComment2Grey is a ColorWithComment2 of type Grey.", + (string) (len=22) "\tColorWithComment2Grey", + (string) (len=66) "\t// ColorWithComment2Yellow is a ColorWithComment2 of type Yellow.", + (string) (len=24) "\tColorWithComment2Yellow", + (string) (len=1) ")", + (string) "", + (string) (len=65) "const _ColorWithComment2Name = \"blackwhiteredgreenbluegreyyellow\"", + (string) "", + (string) (len=39) "var _ColorWithComment2Names = []string{", + (string) (len=29) "\t_ColorWithComment2Name[0:5],", + (string) (len=30) "\t_ColorWithComment2Name[5:10],", + (string) (len=31) "\t_ColorWithComment2Name[10:13],", + (string) (len=31) "\t_ColorWithComment2Name[13:18],", + (string) (len=31) "\t_ColorWithComment2Name[18:22],", + (string) (len=31) "\t_ColorWithComment2Name[22:26],", + (string) (len=31) "\t_ColorWithComment2Name[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=88) "// ColorWithComment2Names returns a list of possible string values of ColorWithComment2.", + (string) (len=40) "func ColorWithComment2Names() []string {", + (string) (len=52) "\ttmp := make([]string, len(_ColorWithComment2Names))", + (string) (len=35) "\tcopy(tmp, _ColorWithComment2Names)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", + (string) (len=54) "\tColorWithComment2Black: _ColorWithComment2Name[0:5],", + (string) (len=55) "\tColorWithComment2White: _ColorWithComment2Name[5:10],", + (string) (len=56) "\tColorWithComment2Red: _ColorWithComment2Name[10:13],", + (string) (len=56) "\tColorWithComment2Green: _ColorWithComment2Name[13:18],", + (string) (len=56) "\tColorWithComment2Blue: _ColorWithComment2Name[18:22],", + (string) (len=56) "\tColorWithComment2Grey: _ColorWithComment2Name[22:26],", + (string) (len=56) "\tColorWithComment2Yellow: _ColorWithComment2Name[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment2) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment2Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", + (string) (len=72) "\t_ColorWithComment2Name[0:5]: ColorWithComment2Black,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): ColorWithComment2Black,", + (string) (len=72) "\t_ColorWithComment2Name[5:10]: ColorWithComment2White,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[5:10]): ColorWithComment2White,", + (string) (len=70) "\t_ColorWithComment2Name[10:13]: ColorWithComment2Red,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment2Name[10:13]): ColorWithComment2Red,", + (string) (len=72) "\t_ColorWithComment2Name[13:18]: ColorWithComment2Green,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[13:18]): ColorWithComment2Green,", + (string) (len=71) "\t_ColorWithComment2Name[18:22]: ColorWithComment2Blue,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment2Name[18:22]): ColorWithComment2Blue,", + (string) (len=71) "\t_ColorWithComment2Name[22:26]: ColorWithComment2Grey,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment2Name[22:26]): ColorWithComment2Grey,", + (string) (len=73) "\t_ColorWithComment2Name[26:32]: ColorWithComment2Yellow,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): ColorWithComment2Yellow,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2.", + (string) (len=69) "func ParseColorWithComment2(name string) (ColorWithComment2, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=65) "\tif x, ok := _ColorWithComment2Value[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=140) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2, try [%s]\", name, strings.Join(_ColorWithComment2Names, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=99) "// MustParseColorWithComment2 converts a string to a ColorWithComment2, and panics if is not valid.", + (string) (len=64) "func MustParseColorWithComment2(name string) ColorWithComment2 {", + (string) (len=41) "\tval, err := ParseColorWithComment2(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment2) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment2) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment2(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=104) "var _ColorWithComment2ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=65) "func (x *ColorWithComment2) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=27) "\t\t*x = ColorWithComment2(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=13) "\tcase string:", + (string) (len=37) "\t\t*x, err = ParseColorWithComment2(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=45) "\t\t*x, err = ParseColorWithComment2(string(v))", + (string) (len=24) "\tcase ColorWithComment2:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=25) "\tcase *ColorWithComment2:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=38) "\t\t*x, err = ParseColorWithComment2(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x ColorWithComment2) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=43) "func ParseColorWithComment2Example() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=64) "\t// ColorWithComment3Black is a ColorWithComment3 of type Black.", + (string) (len=48) "\tColorWithComment3Black ColorWithComment3 = iota", + (string) (len=64) "\t// ColorWithComment3White is a ColorWithComment3 of type White.", + (string) (len=23) "\tColorWithComment3White", + (string) (len=60) "\t// ColorWithComment3Red is a ColorWithComment3 of type Red.", + (string) (len=21) "\tColorWithComment3Red", + (string) (len=64) "\t// ColorWithComment3Green is a ColorWithComment3 of type Green.", + (string) (len=24) "\t// Green starts with 33", + (string) (len=53) "\tColorWithComment3Green ColorWithComment3 = iota + 30", + (string) (len=62) "\t// ColorWithComment3Blue is a ColorWithComment3 of type Blue.", + (string) (len=22) "\tColorWithComment3Blue", + (string) (len=62) "\t// ColorWithComment3Grey is a ColorWithComment3 of type Grey.", + (string) (len=22) "\tColorWithComment3Grey", + (string) (len=66) "\t// ColorWithComment3Yellow is a ColorWithComment3 of type Yellow.", + (string) (len=24) "\tColorWithComment3Yellow", + (string) (len=73) "\t// ColorWithComment3BlueGreen is a ColorWithComment3 of type Blue-Green.", + (string) (len=22) "\t// blue-green comment", + (string) (len=27) "\tColorWithComment3BlueGreen", + (string) (len=73) "\t// ColorWithComment3RedOrange is a ColorWithComment3 of type Red-Orange.", + (string) (len=27) "\tColorWithComment3RedOrange", + (string) (len=82) "\t// ColorWithComment3RedOrangeBlue is a ColorWithComment3 of type Red-Orange-Blue.", + (string) (len=31) "\tColorWithComment3RedOrangeBlue", + (string) (len=1) ")", + (string) "", + (string) (len=100) "const _ColorWithComment3Name = \"blackwhiteredgreenbluegreyyellowblue-greenred-orangered-orange-blue\"", + (string) "", + (string) (len=39) "var _ColorWithComment3Names = []string{", + (string) (len=29) "\t_ColorWithComment3Name[0:5],", + (string) (len=30) "\t_ColorWithComment3Name[5:10],", + (string) (len=31) "\t_ColorWithComment3Name[10:13],", + (string) (len=31) "\t_ColorWithComment3Name[13:18],", + (string) (len=31) "\t_ColorWithComment3Name[18:22],", + (string) (len=31) "\t_ColorWithComment3Name[22:26],", + (string) (len=31) "\t_ColorWithComment3Name[26:32],", + (string) (len=31) "\t_ColorWithComment3Name[32:42],", + (string) (len=31) "\t_ColorWithComment3Name[42:52],", + (string) (len=31) "\t_ColorWithComment3Name[52:67],", + (string) (len=1) "}", + (string) "", + (string) (len=88) "// ColorWithComment3Names returns a list of possible string values of ColorWithComment3.", + (string) (len=40) "func ColorWithComment3Names() []string {", + (string) (len=52) "\ttmp := make([]string, len(_ColorWithComment3Names))", + (string) (len=35) "\tcopy(tmp, _ColorWithComment3Names)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", + (string) (len=61) "\tColorWithComment3Black: _ColorWithComment3Name[0:5],", + (string) (len=62) "\tColorWithComment3White: _ColorWithComment3Name[5:10],", + (string) (len=63) "\tColorWithComment3Red: _ColorWithComment3Name[10:13],", + (string) (len=63) "\tColorWithComment3Green: _ColorWithComment3Name[13:18],", + (string) (len=63) "\tColorWithComment3Blue: _ColorWithComment3Name[18:22],", + (string) (len=63) "\tColorWithComment3Grey: _ColorWithComment3Name[22:26],", + (string) (len=63) "\tColorWithComment3Yellow: _ColorWithComment3Name[26:32],", + (string) (len=63) "\tColorWithComment3BlueGreen: _ColorWithComment3Name[32:42],", + (string) (len=63) "\tColorWithComment3RedOrange: _ColorWithComment3Name[42:52],", + (string) (len=63) "\tColorWithComment3RedOrangeBlue: _ColorWithComment3Name[52:67],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment3) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment3Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", + (string) (len=72) "\t_ColorWithComment3Name[0:5]: ColorWithComment3Black,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): ColorWithComment3Black,", + (string) (len=72) "\t_ColorWithComment3Name[5:10]: ColorWithComment3White,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[5:10]): ColorWithComment3White,", + (string) (len=70) "\t_ColorWithComment3Name[10:13]: ColorWithComment3Red,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment3Name[10:13]): ColorWithComment3Red,", + (string) (len=72) "\t_ColorWithComment3Name[13:18]: ColorWithComment3Green,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[13:18]): ColorWithComment3Green,", + (string) (len=71) "\t_ColorWithComment3Name[18:22]: ColorWithComment3Blue,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment3Name[18:22]): ColorWithComment3Blue,", + (string) (len=71) "\t_ColorWithComment3Name[22:26]: ColorWithComment3Grey,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment3Name[22:26]): ColorWithComment3Grey,", + (string) (len=73) "\t_ColorWithComment3Name[26:32]: ColorWithComment3Yellow,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment3Name[26:32]): ColorWithComment3Yellow,", + (string) (len=76) "\t_ColorWithComment3Name[32:42]: ColorWithComment3BlueGreen,", + (string) (len=76) "\tstrings.ToLower(_ColorWithComment3Name[32:42]): ColorWithComment3BlueGreen,", + (string) (len=76) "\t_ColorWithComment3Name[42:52]: ColorWithComment3RedOrange,", + (string) (len=76) "\tstrings.ToLower(_ColorWithComment3Name[42:52]): ColorWithComment3RedOrange,", + (string) (len=80) "\t_ColorWithComment3Name[52:67]: ColorWithComment3RedOrangeBlue,", + (string) (len=80) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): ColorWithComment3RedOrangeBlue,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3.", + (string) (len=69) "func ParseColorWithComment3(name string) (ColorWithComment3, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=65) "\tif x, ok := _ColorWithComment3Value[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=140) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3, try [%s]\", name, strings.Join(_ColorWithComment3Names, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=99) "// MustParseColorWithComment3 converts a string to a ColorWithComment3, and panics if is not valid.", + (string) (len=64) "func MustParseColorWithComment3(name string) ColorWithComment3 {", + (string) (len=41) "\tval, err := ParseColorWithComment3(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment3) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment3) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment3(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=104) "var _ColorWithComment3ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=65) "func (x *ColorWithComment3) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=27) "\t\t*x = ColorWithComment3(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=13) "\tcase string:", + (string) (len=37) "\t\t*x, err = ParseColorWithComment3(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=45) "\t\t*x, err = ParseColorWithComment3(string(v))", + (string) (len=24) "\tcase ColorWithComment3:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=25) "\tcase *ColorWithComment3:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=38) "\t\t*x, err = ParseColorWithComment3(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x ColorWithComment3) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=43) "func ParseColorWithComment3Example() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=18) "\t// Skipped value.", + (string) (len=15) "\t// Placeholder", + (string) (len=27) "\t_ ColorWithComment4 = iota", + (string) (len=64) "\t// ColorWithComment4Black is a ColorWithComment4 of type Black.", + (string) (len=23) "\tColorWithComment4Black", + (string) (len=64) "\t// ColorWithComment4White is a ColorWithComment4 of type White.", + (string) (len=23) "\tColorWithComment4White", + (string) (len=60) "\t// ColorWithComment4Red is a ColorWithComment4 of type Red.", + (string) (len=21) "\tColorWithComment4Red", + (string) (len=64) "\t// ColorWithComment4Green is a ColorWithComment4 of type Green.", + (string) (len=24) "\t// Green starts with 33", + (string) (len=53) "\tColorWithComment4Green ColorWithComment4 = iota + 29", + (string) (len=62) "\t// ColorWithComment4Blue is a ColorWithComment4 of type Blue.", + (string) (len=22) "\tColorWithComment4Blue", + (string) (len=62) "\t// ColorWithComment4Grey is a ColorWithComment4 of type Grey.", + (string) (len=22) "\tColorWithComment4Grey", + (string) (len=66) "\t// ColorWithComment4Yellow is a ColorWithComment4 of type Yellow.", + (string) (len=110) "\t// Where did all the (somewhat) bad fish go? (something else that goes in parentheses at the end of the line)", + (string) (len=24) "\tColorWithComment4Yellow", + (string) (len=73) "\t// ColorWithComment4BlueGreen is a ColorWithComment4 of type Blue-Green.", + (string) (len=22) "\t// blue-green comment", + (string) (len=27) "\tColorWithComment4BlueGreen", + (string) (len=73) "\t// ColorWithComment4RedOrange is a ColorWithComment4 of type Red-Orange.", + (string) (len=20) "\t// has a , in it!?!", + (string) (len=27) "\tColorWithComment4RedOrange", + (string) (len=1) ")", + (string) "", + (string) (len=85) "const _ColorWithComment4Name = \"blackwhiteredgreenbluegreyyellowblue-greenred-orange\"", + (string) "", + (string) (len=39) "var _ColorWithComment4Names = []string{", + (string) (len=29) "\t_ColorWithComment4Name[0:5],", + (string) (len=30) "\t_ColorWithComment4Name[5:10],", + (string) (len=31) "\t_ColorWithComment4Name[10:13],", + (string) (len=31) "\t_ColorWithComment4Name[13:18],", + (string) (len=31) "\t_ColorWithComment4Name[18:22],", + (string) (len=31) "\t_ColorWithComment4Name[22:26],", + (string) (len=31) "\t_ColorWithComment4Name[26:32],", + (string) (len=31) "\t_ColorWithComment4Name[32:42],", + (string) (len=31) "\t_ColorWithComment4Name[42:52],", + (string) (len=1) "}", + (string) "", + (string) (len=88) "// ColorWithComment4Names returns a list of possible string values of ColorWithComment4.", + (string) (len=40) "func ColorWithComment4Names() []string {", + (string) (len=52) "\ttmp := make([]string, len(_ColorWithComment4Names))", + (string) (len=35) "\tcopy(tmp, _ColorWithComment4Names)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", + (string) (len=57) "\tColorWithComment4Black: _ColorWithComment4Name[0:5],", + (string) (len=58) "\tColorWithComment4White: _ColorWithComment4Name[5:10],", + (string) (len=59) "\tColorWithComment4Red: _ColorWithComment4Name[10:13],", + (string) (len=59) "\tColorWithComment4Green: _ColorWithComment4Name[13:18],", + (string) (len=59) "\tColorWithComment4Blue: _ColorWithComment4Name[18:22],", + (string) (len=59) "\tColorWithComment4Grey: _ColorWithComment4Name[22:26],", + (string) (len=59) "\tColorWithComment4Yellow: _ColorWithComment4Name[26:32],", + (string) (len=59) "\tColorWithComment4BlueGreen: _ColorWithComment4Name[32:42],", + (string) (len=59) "\tColorWithComment4RedOrange: _ColorWithComment4Name[42:52],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment4) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment4Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", + (string) (len=72) "\t_ColorWithComment4Name[0:5]: ColorWithComment4Black,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): ColorWithComment4Black,", + (string) (len=72) "\t_ColorWithComment4Name[5:10]: ColorWithComment4White,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[5:10]): ColorWithComment4White,", + (string) (len=70) "\t_ColorWithComment4Name[10:13]: ColorWithComment4Red,", + (string) (len=70) "\tstrings.ToLower(_ColorWithComment4Name[10:13]): ColorWithComment4Red,", + (string) (len=72) "\t_ColorWithComment4Name[13:18]: ColorWithComment4Green,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[13:18]): ColorWithComment4Green,", + (string) (len=71) "\t_ColorWithComment4Name[18:22]: ColorWithComment4Blue,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment4Name[18:22]): ColorWithComment4Blue,", + (string) (len=71) "\t_ColorWithComment4Name[22:26]: ColorWithComment4Grey,", + (string) (len=71) "\tstrings.ToLower(_ColorWithComment4Name[22:26]): ColorWithComment4Grey,", + (string) (len=73) "\t_ColorWithComment4Name[26:32]: ColorWithComment4Yellow,", + (string) (len=73) "\tstrings.ToLower(_ColorWithComment4Name[26:32]): ColorWithComment4Yellow,", + (string) (len=76) "\t_ColorWithComment4Name[32:42]: ColorWithComment4BlueGreen,", + (string) (len=76) "\tstrings.ToLower(_ColorWithComment4Name[32:42]): ColorWithComment4BlueGreen,", + (string) (len=76) "\t_ColorWithComment4Name[42:52]: ColorWithComment4RedOrange,", + (string) (len=76) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): ColorWithComment4RedOrange,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4.", + (string) (len=69) "func ParseColorWithComment4(name string) (ColorWithComment4, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=65) "\tif x, ok := _ColorWithComment4Value[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=140) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4, try [%s]\", name, strings.Join(_ColorWithComment4Names, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=99) "// MustParseColorWithComment4 converts a string to a ColorWithComment4, and panics if is not valid.", + (string) (len=64) "func MustParseColorWithComment4(name string) ColorWithComment4 {", + (string) (len=41) "\tval, err := ParseColorWithComment4(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment4) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment4) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment4(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=104) "var _ColorWithComment4ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=65) "func (x *ColorWithComment4) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=27) "\t\t*x = ColorWithComment4(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=13) "\tcase string:", + (string) (len=37) "\t\t*x, err = ParseColorWithComment4(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=45) "\t\t*x, err = ParseColorWithComment4(string(v))", + (string) (len=24) "\tcase ColorWithComment4:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=25) "\tcase *ColorWithComment4:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=38) "\t\t*x, err = ParseColorWithComment4(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x ColorWithComment4) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=43) "func ParseColorWithComment4Example() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=52) "\t// Enum64bitUnknown is a Enum64bit of type Unknown.", + (string) (len=34) "\tEnum64bitUnknown Enum64bit = iota", + (string) (len=48) "\t// Enum64bitE2P15 is a Enum64bit of type E2P15.", + (string) (len=40) "\tEnum64bitE2P15 Enum64bit = iota + 32767", + (string) (len=48) "\t// Enum64bitE2P16 is a Enum64bit of type E2P16.", + (string) (len=40) "\tEnum64bitE2P16 Enum64bit = iota + 65534", + (string) (len=48) "\t// Enum64bitE2P17 is a Enum64bit of type E2P17.", + (string) (len=41) "\tEnum64bitE2P17 Enum64bit = iota + 131069", + (string) (len=48) "\t// Enum64bitE2P18 is a Enum64bit of type E2P18.", + (string) (len=41) "\tEnum64bitE2P18 Enum64bit = iota + 262140", + (string) (len=48) "\t// Enum64bitE2P19 is a Enum64bit of type E2P19.", + (string) (len=41) "\tEnum64bitE2P19 Enum64bit = iota + 524283", + (string) (len=48) "\t// Enum64bitE2P20 is a Enum64bit of type E2P20.", + (string) (len=42) "\tEnum64bitE2P20 Enum64bit = iota + 1048570", + (string) (len=48) "\t// Enum64bitE2P21 is a Enum64bit of type E2P21.", + (string) (len=42) "\tEnum64bitE2P21 Enum64bit = iota + 2097145", + (string) (len=48) "\t// Enum64bitE2P22 is a Enum64bit of type E2P22.", + (string) (len=43) "\tEnum64bitE2P22 Enum64bit = iota + 33554424", + (string) (len=48) "\t// Enum64bitE2P23 is a Enum64bit of type E2P23.", + (string) (len=43) "\tEnum64bitE2P23 Enum64bit = iota + 67108855", + (string) (len=48) "\t// Enum64bitE2P28 is a Enum64bit of type E2P28.", + (string) (len=44) "\tEnum64bitE2P28 Enum64bit = iota + 536870902", + (string) (len=48) "\t// Enum64bitE2P30 is a Enum64bit of type E2P30.", + (string) (len=45) "\tEnum64bitE2P30 Enum64bit = iota + 1073741813", + (string) (len=48) "\t// Enum64bitE2P31 is a Enum64bit of type E2P31.", + (string) (len=45) "\tEnum64bitE2P31 Enum64bit = iota + 2147483636", + (string) (len=48) "\t// Enum64bitE2P32 is a Enum64bit of type E2P32.", + (string) (len=45) "\tEnum64bitE2P32 Enum64bit = iota + 4294967283", + (string) (len=48) "\t// Enum64bitE2P33 is a Enum64bit of type E2P33.", + (string) (len=45) "\tEnum64bitE2P33 Enum64bit = iota + 8454967282", + (string) (len=1) ")", + (string) "", + (string) (len=102) "const _Enum64bitName = \"unknowne2p15e2p16e2p17e2p18e2p19e2p20e2p21e2p22e2p23e2p28e2p30e2p31e2p32e2p33\"", + (string) "", + (string) (len=31) "var _Enum64bitNames = []string{", + (string) (len=21) "\t_Enum64bitName[0:7],", + (string) (len=22) "\t_Enum64bitName[7:12],", + (string) (len=23) "\t_Enum64bitName[12:17],", + (string) (len=23) "\t_Enum64bitName[17:22],", + (string) (len=23) "\t_Enum64bitName[22:27],", + (string) (len=23) "\t_Enum64bitName[27:32],", + (string) (len=23) "\t_Enum64bitName[32:37],", + (string) (len=23) "\t_Enum64bitName[37:42],", + (string) (len=23) "\t_Enum64bitName[42:47],", + (string) (len=23) "\t_Enum64bitName[47:52],", + (string) (len=23) "\t_Enum64bitName[52:57],", + (string) (len=23) "\t_Enum64bitName[57:62],", + (string) (len=23) "\t_Enum64bitName[62:67],", + (string) (len=23) "\t_Enum64bitName[67:72],", + (string) (len=23) "\t_Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=72) "// Enum64bitNames returns a list of possible string values of Enum64bit.", + (string) (len=32) "func Enum64bitNames() []string {", + (string) (len=44) "\ttmp := make([]string, len(_Enum64bitNames))", + (string) (len=27) "\tcopy(tmp, _Enum64bitNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", + (string) (len=39) "\tEnum64bitUnknown: _Enum64bitName[0:7],", + (string) (len=40) "\tEnum64bitE2P15: _Enum64bitName[7:12],", + (string) (len=41) "\tEnum64bitE2P16: _Enum64bitName[12:17],", + (string) (len=41) "\tEnum64bitE2P17: _Enum64bitName[17:22],", + (string) (len=41) "\tEnum64bitE2P18: _Enum64bitName[22:27],", + (string) (len=41) "\tEnum64bitE2P19: _Enum64bitName[27:32],", + (string) (len=41) "\tEnum64bitE2P20: _Enum64bitName[32:37],", + (string) (len=41) "\tEnum64bitE2P21: _Enum64bitName[37:42],", + (string) (len=41) "\tEnum64bitE2P22: _Enum64bitName[42:47],", + (string) (len=41) "\tEnum64bitE2P23: _Enum64bitName[47:52],", + (string) (len=41) "\tEnum64bitE2P28: _Enum64bitName[52:57],", + (string) (len=41) "\tEnum64bitE2P30: _Enum64bitName[57:62],", + (string) (len=41) "\tEnum64bitE2P31: _Enum64bitName[62:67],", + (string) (len=41) "\tEnum64bitE2P32: _Enum64bitName[67:72],", + (string) (len=41) "\tEnum64bitE2P33: _Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x Enum64bit) String() string {", + (string) (len=37) "\tif str, ok := _Enum64bitMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", + (string) (len=58) "\t_Enum64bitName[0:7]: Enum64bitUnknown,", + (string) (len=58) "\tstrings.ToLower(_Enum64bitName[0:7]): Enum64bitUnknown,", + (string) (len=56) "\t_Enum64bitName[7:12]: Enum64bitE2P15,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[7:12]): Enum64bitE2P15,", + (string) (len=56) "\t_Enum64bitName[12:17]: Enum64bitE2P16,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[12:17]): Enum64bitE2P16,", + (string) (len=56) "\t_Enum64bitName[17:22]: Enum64bitE2P17,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[17:22]): Enum64bitE2P17,", + (string) (len=56) "\t_Enum64bitName[22:27]: Enum64bitE2P18,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[22:27]): Enum64bitE2P18,", + (string) (len=56) "\t_Enum64bitName[27:32]: Enum64bitE2P19,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[27:32]): Enum64bitE2P19,", + (string) (len=56) "\t_Enum64bitName[32:37]: Enum64bitE2P20,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[32:37]): Enum64bitE2P20,", + (string) (len=56) "\t_Enum64bitName[37:42]: Enum64bitE2P21,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[37:42]): Enum64bitE2P21,", + (string) (len=56) "\t_Enum64bitName[42:47]: Enum64bitE2P22,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[42:47]): Enum64bitE2P22,", + (string) (len=56) "\t_Enum64bitName[47:52]: Enum64bitE2P23,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[47:52]): Enum64bitE2P23,", + (string) (len=56) "\t_Enum64bitName[52:57]: Enum64bitE2P28,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[52:57]): Enum64bitE2P28,", + (string) (len=56) "\t_Enum64bitName[57:62]: Enum64bitE2P30,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[57:62]): Enum64bitE2P30,", + (string) (len=56) "\t_Enum64bitName[62:67]: Enum64bitE2P31,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[62:67]): Enum64bitE2P31,", + (string) (len=56) "\t_Enum64bitName[67:72]: Enum64bitE2P32,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[67:72]): Enum64bitE2P32,", + (string) (len=56) "\t_Enum64bitName[72:77]: Enum64bitE2P33,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[72:77]): Enum64bitE2P33,", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// ParseEnum64bit attempts to convert a string to a Enum64bit.", + (string) (len=53) "func ParseEnum64bit(name string) (Enum64bit, error) {", + (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=57) "\tif x, ok := _Enum64bitValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=116) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit, try [%s]\", name, strings.Join(_Enum64bitNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=83) "// MustParseEnum64bit converts a string to a Enum64bit, and panics if is not valid.", + (string) (len=48) "func MustParseEnum64bit(name string) Enum64bit {", + (string) (len=33) "\tval, err := ParseEnum64bit(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=50) "func (x Enum64bit) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=54) "func (x *Enum64bit) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=33) "\ttmp, err := ParseEnum64bit(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=96) "var _Enum64bitErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=57) "func (x *Enum64bit) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=19) "\t\t*x = Enum64bit(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=13) "\tcase string:", + (string) (len=29) "\t\t*x, err = ParseEnum64bit(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=37) "\t\t*x, err = ParseEnum64bit(string(v))", + (string) (len=16) "\tcase Enum64bit:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=17) "\tcase *Enum64bit:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=30) "\t\t*x, err = ParseEnum64bit(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=50) "func (x Enum64bit) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=35) "func ParseEnum64bitExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=42) "\t// ModelToyota is a Model of type Toyota.", + (string) (len=25) "\tModelToyota Model = iota", + (string) (len=18) "\t// Skipped value.", + (string) (len=2) "\t_", + (string) (len=40) "\t// ModelChevy is a Model of type Chevy.", + (string) (len=11) "\tModelChevy", + (string) (len=18) "\t// Skipped value.", + (string) (len=2) "\t_", + (string) (len=38) "\t// ModelFord is a Model of type Ford.", + (string) (len=10) "\tModelFord", + (string) (len=1) ")", + (string) "", + (string) (len=36) "const _ModelName = \"toyotachevyford\"", + (string) "", + (string) (len=27) "var _ModelNames = []string{", + (string) (len=17) "\t_ModelName[0:6],", + (string) (len=18) "\t_ModelName[6:11],", + (string) (len=19) "\t_ModelName[11:15],", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ModelNames returns a list of possible string values of Model.", + (string) (len=28) "func ModelNames() []string {", + (string) (len=40) "\ttmp := make([]string, len(_ModelNames))", + (string) (len=23) "\tcopy(tmp, _ModelNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _ModelMap = map[Model]string{", + (string) (len=30) "\tModelToyota: _ModelName[0:6],", + (string) (len=31) "\tModelChevy: _ModelName[6:11],", + (string) (len=32) "\tModelFord: _ModelName[11:15],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Model) String() string {", + (string) (len=33) "\tif str, ok := _ModelMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _ModelValue = map[string]Model{", + (string) (len=49) "\t_ModelName[0:6]: ModelToyota,", + (string) (len=49) "\tstrings.ToLower(_ModelName[0:6]): ModelToyota,", + (string) (len=48) "\t_ModelName[6:11]: ModelChevy,", + (string) (len=48) "\tstrings.ToLower(_ModelName[6:11]): ModelChevy,", + (string) (len=47) "\t_ModelName[11:15]: ModelFord,", + (string) (len=47) "\tstrings.ToLower(_ModelName[11:15]): ModelFord,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseModel attempts to convert a string to a Model.", + (string) (len=45) "func ParseModel(name string) (Model, error) {", + (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=53) "\tif x, ok := _ModelValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=104) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model, try [%s]\", name, strings.Join(_ModelNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=75) "// MustParseModel converts a string to a Model, and panics if is not valid.", + (string) (len=40) "func MustParseModel(name string) Model {", + (string) (len=29) "\tval, err := ParseModel(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Model) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Model) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseModel(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=92) "var _ModelErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=53) "func (x *Model) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=15) "\t\t*x = Model(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=13) "\tcase string:", + (string) (len=25) "\t\t*x, err = ParseModel(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=33) "\t\t*x, err = ParseModel(string(v))", + (string) (len=12) "\tcase Model:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=13) "\tcase *Model:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=26) "\t\t*x, err = ParseModel(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=46) "func (x Model) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=31) "func ParseModelExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=60) "\t// NonASCIIПродам is a NonASCII of type Продам.", + (string) (len=44) "\tNonASCIIПродам NonASCII = iota + 1114", + (string) (len=48) "\t// NonASCII車庫 is a NonASCII of type 車庫.", + (string) (len=37) "\tNonASCII車庫 NonASCII = iota + 299", + (string) (len=52) "\t// NonASCIIԷժան is a NonASCII of type Էժան.", + (string) (len=38) "\tNonASCIIԷժան NonASCII = iota + -1", + (string) (len=1) ")", + (string) "", + (string) (len=50) "const _NonASCIIName = \"продам車庫էժան\"", + (string) "", + (string) (len=30) "var _NonASCIINames = []string{", + (string) (len=21) "\t_NonASCIIName[0:12],", + (string) (len=22) "\t_NonASCIIName[12:18],", + (string) (len=22) "\t_NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=70) "// NonASCIINames returns a list of possible string values of NonASCII.", + (string) (len=31) "func NonASCIINames() []string {", + (string) (len=43) "\ttmp := make([]string, len(_NonASCIINames))", + (string) (len=26) "\tcopy(tmp, _NonASCIINames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", + (string) (len=43) "\tNonASCIIПродам: _NonASCIIName[0:12],", + (string) (len=42) "\tNonASCII車庫: _NonASCIIName[12:18],", + (string) (len=42) "\tNonASCIIԷժան: _NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=35) "func (x NonASCII) String() string {", + (string) (len=36) "\tif str, ok := _NonASCIIMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", + (string) (len=61) "\t_NonASCIIName[0:12]: NonASCIIПродам,", + (string) (len=61) "\tstrings.ToLower(_NonASCIIName[0:12]): NonASCIIПродам,", + (string) (len=55) "\t_NonASCIIName[12:18]: NonASCII車庫,", + (string) (len=55) "\tstrings.ToLower(_NonASCIIName[12:18]): NonASCII車庫,", + (string) (len=57) "\t_NonASCIIName[18:26]: NonASCIIԷժան,", + (string) (len=57) "\tstrings.ToLower(_NonASCIIName[18:26]): NonASCIIԷժան,", + (string) (len=1) "}", + (string) "", + (string) (len=60) "// ParseNonASCII attempts to convert a string to a NonASCII.", + (string) (len=51) "func ParseNonASCII(name string) (NonASCII, error) {", + (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=56) "\tif x, ok := _NonASCIIValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=113) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII, try [%s]\", name, strings.Join(_NonASCIINames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=81) "// MustParseNonASCII converts a string to a NonASCII, and panics if is not valid.", + (string) (len=46) "func MustParseNonASCII(name string) NonASCII {", + (string) (len=32) "\tval, err := ParseNonASCII(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=49) "func (x NonASCII) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=53) "func (x *NonASCII) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=32) "\ttmp, err := ParseNonASCII(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=95) "var _NonASCIIErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=56) "func (x *NonASCII) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=18) "\t\t*x = NonASCII(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=13) "\tcase string:", + (string) (len=28) "\t\t*x, err = ParseNonASCII(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=36) "\t\t*x, err = ParseNonASCII(string(v))", + (string) (len=15) "\tcase NonASCII:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=16) "\tcase *NonASCII:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=29) "\t\t*x, err = ParseNonASCII(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=49) "func (x NonASCII) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=34) "func ParseNonASCIIExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=61) "\t// SanitizingTestHyphen is a Sanitizing of type Test-Hyphen.", + (string) (len=39) "\tSanitizingTestHyphen Sanitizing = iota", + (string) (len=63) "\t// SanitizingHyphenStart is a Sanitizing of type -HyphenStart.", + (string) (len=22) "\tSanitizingHyphenStart", + (string) (len=72) "\t// Sanitizing_underscoreFirst is a Sanitizing of type _underscoreFirst.", + (string) (len=27) "\tSanitizing_underscoreFirst", + (string) (len=64) "\t// Sanitizing0numberFirst is a Sanitizing of type 0numberFirst.", + (string) (len=23) "\tSanitizing0numberFirst", + (string) (len=60) "\t// Sanitizing123456789a is a Sanitizing of type 123456789a.", + (string) (len=21) "\tSanitizing123456789a", + (string) (len=61) "\t// Sanitizing123123Asdf is a Sanitizing of type 123123-Asdf.", + (string) (len=21) "\tSanitizing123123Asdf", + (string) (len=66) "\t// SanitizingEndingHyphen is a Sanitizing of type Ending-Hyphen-.", + (string) (len=23) "\tSanitizingEndingHyphen", + (string) (len=1) ")", + (string) "", + (string) (len=112) "const _SanitizingName = \"test-hyphen-hyphenstart_underscorefirst0numberfirst123456789a123123-asdfending-hyphen-\"", + (string) "", + (string) (len=32) "var _SanitizingNames = []string{", + (string) (len=23) "\t_SanitizingName[0:11],", + (string) (len=24) "\t_SanitizingName[11:23],", + (string) (len=24) "\t_SanitizingName[23:39],", + (string) (len=24) "\t_SanitizingName[39:51],", + (string) (len=24) "\t_SanitizingName[51:61],", + (string) (len=24) "\t_SanitizingName[61:72],", + (string) (len=24) "\t_SanitizingName[72:86],", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// SanitizingNames returns a list of possible string values of Sanitizing.", + (string) (len=33) "func SanitizingNames() []string {", + (string) (len=45) "\ttmp := make([]string, len(_SanitizingNames))", + (string) (len=28) "\tcopy(tmp, _SanitizingNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", + (string) (len=51) "\tSanitizingTestHyphen: _SanitizingName[0:11],", + (string) (len=52) "\tSanitizingHyphenStart: _SanitizingName[11:23],", + (string) (len=52) "\tSanitizing_underscoreFirst: _SanitizingName[23:39],", + (string) (len=52) "\tSanitizing0numberFirst: _SanitizingName[39:51],", + (string) (len=52) "\tSanitizing123456789a: _SanitizingName[51:61],", + (string) (len=52) "\tSanitizing123123Asdf: _SanitizingName[61:72],", + (string) (len=52) "\tSanitizingEndingHyphen: _SanitizingName[72:86],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x Sanitizing) String() string {", + (string) (len=38) "\tif str, ok := _SanitizingMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", + (string) (len=63) "\t_SanitizingName[0:11]: SanitizingTestHyphen,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[0:11]): SanitizingTestHyphen,", + (string) (len=64) "\t_SanitizingName[11:23]: SanitizingHyphenStart,", + (string) (len=64) "\tstrings.ToLower(_SanitizingName[11:23]): SanitizingHyphenStart,", + (string) (len=69) "\t_SanitizingName[23:39]: Sanitizing_underscoreFirst,", + (string) (len=69) "\tstrings.ToLower(_SanitizingName[23:39]): Sanitizing_underscoreFirst,", + (string) (len=65) "\t_SanitizingName[39:51]: Sanitizing0numberFirst,", + (string) (len=65) "\tstrings.ToLower(_SanitizingName[39:51]): Sanitizing0numberFirst,", + (string) (len=63) "\t_SanitizingName[51:61]: Sanitizing123456789a,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[51:61]): Sanitizing123456789a,", + (string) (len=63) "\t_SanitizingName[61:72]: Sanitizing123123Asdf,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[61:72]): Sanitizing123123Asdf,", + (string) (len=65) "\t_SanitizingName[72:86]: SanitizingEndingHyphen,", + (string) (len=65) "\tstrings.ToLower(_SanitizingName[72:86]): SanitizingEndingHyphen,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseSanitizing attempts to convert a string to a Sanitizing.", + (string) (len=55) "func ParseSanitizing(name string) (Sanitizing, error) {", + (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=58) "\tif x, ok := _SanitizingValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=119) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing, try [%s]\", name, strings.Join(_SanitizingNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=85) "// MustParseSanitizing converts a string to a Sanitizing, and panics if is not valid.", + (string) (len=50) "func MustParseSanitizing(name string) Sanitizing {", + (string) (len=34) "\tval, err := ParseSanitizing(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x Sanitizing) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *Sanitizing) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=34) "\ttmp, err := ParseSanitizing(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=97) "var _SanitizingErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *Sanitizing) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=20) "\t\t*x = Sanitizing(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseSanitizing(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=38) "\t\t*x, err = ParseSanitizing(string(v))", + (string) (len=17) "\tcase Sanitizing:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=18) "\tcase *Sanitizing:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseSanitizing(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x Sanitizing) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=36) "func ParseSanitizingExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=36) "\t// SodaCoke is a Soda of type Coke.", + (string) (len=21) "\tSodaCoke Soda = iota", + (string) (len=38) "\t// SodaPepsi is a Soda of type Pepsi.", + (string) (len=10) "\tSodaPepsi", + (string) (len=40) "\t// SodaMtnDew is a Soda of type MtnDew.", + (string) (len=11) "\tSodaMtnDew", + (string) (len=1) ")", + (string) "", + (string) (len=35) "const _SodaName = \"cokepepsimtndew\"", + (string) "", + (string) (len=26) "var _SodaNames = []string{", + (string) (len=16) "\t_SodaName[0:4],", + (string) (len=16) "\t_SodaName[4:9],", + (string) (len=17) "\t_SodaName[9:15],", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// SodaNames returns a list of possible string values of Soda.", + (string) (len=27) "func SodaNames() []string {", + (string) (len=39) "\ttmp := make([]string, len(_SodaNames))", + (string) (len=22) "\tcopy(tmp, _SodaNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=31) "var _SodaMap = map[Soda]string{", + (string) (len=28) "\tSodaCoke: _SodaName[0:4],", + (string) (len=28) "\tSodaPepsi: _SodaName[4:9],", + (string) (len=29) "\tSodaMtnDew: _SodaName[9:15],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=31) "func (x Soda) String() string {", + (string) (len=32) "\tif str, ok := _SodaMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _SodaValue = map[string]Soda{", + (string) (len=44) "\t_SodaName[0:4]: SodaCoke,", + (string) (len=44) "\tstrings.ToLower(_SodaName[0:4]): SodaCoke,", + (string) (len=45) "\t_SodaName[4:9]: SodaPepsi,", + (string) (len=45) "\tstrings.ToLower(_SodaName[4:9]): SodaPepsi,", + (string) (len=46) "\t_SodaName[9:15]: SodaMtnDew,", + (string) (len=46) "\tstrings.ToLower(_SodaName[9:15]): SodaMtnDew,", + (string) (len=1) "}", + (string) "", + (string) (len=52) "// ParseSoda attempts to convert a string to a Soda.", + (string) (len=43) "func ParseSoda(name string) (Soda, error) {", + (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=52) "\tif x, ok := _SodaValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=101) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda, try [%s]\", name, strings.Join(_SodaNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=73) "// MustParseSoda converts a string to a Soda, and panics if is not valid.", + (string) (len=38) "func MustParseSoda(name string) Soda {", + (string) (len=28) "\tval, err := ParseSoda(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=45) "func (x Soda) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=49) "func (x *Soda) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=28) "\ttmp, err := ParseSoda(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=91) "var _SodaErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=52) "func (x *Soda) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=14) "\t\t*x = Soda(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=13) "\tcase string:", + (string) (len=24) "\t\t*x, err = ParseSoda(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=32) "\t\t*x, err = ParseSoda(string(v))", + (string) (len=11) "\tcase Soda:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=12) "\tcase *Soda:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=25) "\t\t*x, err = ParseSoda(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=45) "func (x Soda) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=30) "func ParseSodaExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=68) "\t// StartNotZeroStartWithNum is a StartNotZero of type StartWithNum.", + (string) (len=50) "\tStartNotZeroStartWithNum StartNotZero = iota + 23", + (string) (len=58) "\t// StartNotZeroNextNum is a StartNotZero of type NextNum.", + (string) (len=20) "\tStartNotZeroNextNum", + (string) (len=1) ")", + (string) "", + (string) (len=47) "const _StartNotZeroName = \"startwithnumnextnum\"", + (string) "", + (string) (len=34) "var _StartNotZeroNames = []string{", + (string) (len=25) "\t_StartNotZeroName[0:12],", + (string) (len=26) "\t_StartNotZeroName[12:19],", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// StartNotZeroNames returns a list of possible string values of StartNotZero.", + (string) (len=35) "func StartNotZeroNames() []string {", + (string) (len=47) "\ttmp := make([]string, len(_StartNotZeroNames))", + (string) (len=30) "\tcopy(tmp, _StartNotZeroNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", + (string) (len=51) "\tStartNotZeroStartWithNum: _StartNotZeroName[0:12],", + (string) (len=52) "\tStartNotZeroNextNum: _StartNotZeroName[12:19],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=39) "func (x StartNotZero) String() string {", + (string) (len=40) "\tif str, ok := _StartNotZeroMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", + (string) (len=69) "\t_StartNotZeroName[0:12]: StartNotZeroStartWithNum,", + (string) (len=69) "\tstrings.ToLower(_StartNotZeroName[0:12]): StartNotZeroStartWithNum,", + (string) (len=64) "\t_StartNotZeroName[12:19]: StartNotZeroNextNum,", + (string) (len=64) "\tstrings.ToLower(_StartNotZeroName[12:19]): StartNotZeroNextNum,", + (string) (len=1) "}", + (string) "", + (string) (len=68) "// ParseStartNotZero attempts to convert a string to a StartNotZero.", + (string) (len=59) "func ParseStartNotZero(name string) (StartNotZero, error) {", + (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=60) "\tif x, ok := _StartNotZeroValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=125) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero, try [%s]\", name, strings.Join(_StartNotZeroNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=89) "// MustParseStartNotZero converts a string to a StartNotZero, and panics if is not valid.", + (string) (len=54) "func MustParseStartNotZero(name string) StartNotZero {", + (string) (len=36) "\tval, err := ParseStartNotZero(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=53) "func (x StartNotZero) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=57) "func (x *StartNotZero) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=36) "\ttmp, err := ParseStartNotZero(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=99) "var _StartNotZeroErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=60) "func (x *StartNotZero) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=22) "\t\t*x = StartNotZero(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=13) "\tcase string:", + (string) (len=32) "\t\t*x, err = ParseStartNotZero(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=40) "\t\t*x, err = ParseStartNotZero(string(v))", + (string) (len=19) "\tcase StartNotZero:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=20) "\tcase *StartNotZero:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=33) "\t\t*x, err = ParseStartNotZero(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=53) "func (x StartNotZero) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=38) "func ParseStartNotZeroExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) "" +} diff --git a/generator/generator.go b/generator/generator.go index c54dd64a..111e8e0f 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -260,6 +260,7 @@ func (g *Generator) Generate(f *ast.File) ([]byte, error) { } sort.Strings(keys) + var created int for _, name := range keys { ts := enums[name] @@ -269,6 +270,7 @@ func (g *Generator) Generate(f *ast.File) ([]byte, error) { continue } + created++ data := map[string]interface{}{ "enum": enum, "name": name, @@ -298,6 +300,11 @@ func (g *Generator) Generate(f *ast.File) ([]byte, error) { } } + if created < 1 { + // Don't save anything if we didn't actually generate any successful enums. + return nil, nil + } + formatted, err := imports.Process(pkg, vBuff.Bytes(), nil) if err != nil { err = fmt.Errorf("generate: error formatting code %s\n\n%s", err, vBuff.String()) @@ -338,6 +345,9 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { } enumDecl := getEnumDeclFromComments(ts.Doc.List) + if enumDecl == "" { + return nil, errors.New("failed parsing enum") + } values := strings.Split(strings.TrimSuffix(strings.TrimPrefix(enumDecl, `ENUM(`), `)`), `,`) var ( @@ -530,6 +540,7 @@ func getEnumDeclFromComments(comments []*ast.Comment) string { if enumParamLevel > 0 { fmt.Println("ENUM Parse error, there is a dangling '(' in your comment.") + return "" } joined := fmt.Sprintf("ENUM(%s)", strings.Join(parts, `,`)) return joined diff --git a/generator/generator_1.18_test.go b/generator/generator_1.18_test.go index 45383188..f061b0ee 100644 --- a/generator/generator_1.18_test.go +++ b/generator/generator_1.18_test.go @@ -75,6 +75,33 @@ func Test118ExampleFile(t *testing.T) { } } +// TestExampleFileMoreOptions +func Test118ExampleFileMoreOptions(t *testing.T) { + g := NewGenerator(). + WithMarshal(). + WithSQLDriver(). + WithCaseInsensitiveParse(). + WithNames(). + WithoutSnakeToCamel(). + WithMustParse(). + WithForceLower(). + WithTemplates(`../_example/user_template.tmpl`) + for name, testExample := range testExampleFiles { + t.Run(name, func(t *testing.T) { + // Parse the file given in arguments + imported, err := g.GenerateFromFile(testExample) + require.Nil(t, err, "Error generating formatted code") + + outputLines := strings.Split(string(imported), "\n") + cupaloy.SnapshotT(t, outputLines) + + if false { + fmt.Println(string(imported)) + } + }) + } +} + // TestExampleFile func Test118NoPrefixExampleFile(t *testing.T) { g := NewGenerator(). @@ -206,3 +233,91 @@ func Test118AliasParsing(t *testing.T) { }) } } + +// TestEnumParseFailure +func Test118EnumParseFailure(t *testing.T) { + input := `package test + // Behavior + type SomeInterface interface{ + + } + + // ENUM( + // a, + //} + type Animal int + ` + g := NewGenerator(). + WithoutSnakeToCamel() + f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) + assert.Nil(t, err, "Error parsing no struct input") + + output, err := g.Generate(f) + assert.Nil(t, err, "Error generating formatted code") + assert.Empty(t, string(output)) + if false { // Debugging statement + fmt.Println(string(output)) + } +} + +// TestUintInvalidParsing +func TestUintInvalidParsing(t *testing.T) { + input := `package test + // ENUM( + // a=-1, + //) + type Animal uint + ` + g := NewGenerator(). + WithoutSnakeToCamel() + f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) + assert.Nil(t, err, "Error parsing no struct input") + + output, err := g.Generate(f) + assert.Nil(t, err, "Error generating formatted code") + assert.Empty(t, string(output)) + if false { // Debugging statement + fmt.Println(string(output)) + } +} + +// TestIntInvalidParsing +func Test118IntInvalidParsing(t *testing.T) { + input := `package test + // ENUM( + // a=c, + //) + type Animal int + ` + g := NewGenerator(). + WithoutSnakeToCamel() + f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) + assert.Nil(t, err, "Error parsing no struct input") + + output, err := g.Generate(f) + assert.Nil(t, err, "Error generating formatted code") + assert.Empty(t, string(output)) + if false { // Debugging statement + fmt.Println(string(output)) + } +} + +// TestAliasing +func Test118Aliasing(t *testing.T) { + input := `package test + // ENUM(a,b,CDEF) with some extra text + type Animal int + ` + g := NewGenerator(). + WithoutSnakeToCamel() + ParseAliases([]string{"CDEF:C"}) + f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) + assert.Nil(t, err, "Error parsing no struct input") + + output, err := g.Generate(f) + assert.Nil(t, err, "Error generating formatted code") + assert.Contains(t, string(output), "// AnimalC is a Animal of type CDEF.") + if false { // Debugging statement + fmt.Println(string(output)) + } +} diff --git a/generator/generator_test.go b/generator/generator_test.go index 87415d86..b2c605f2 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -10,6 +10,7 @@ import ( "testing" "github.com/bradleyjkemp/cupaloy" + "github.com/pkg/errors" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -77,7 +78,7 @@ func TestExampleFileMoreOptions(t *testing.T) { WithoutSnakeToCamel(). WithMustParse(). WithForceLower(). - WithTemplates(`../example/user_template.tmpl`) + WithTemplates(`../_example/user_template.tmpl`) // Parse the file given in arguments imported, err := g.GenerateFromFile(testExample) require.Nil(t, err, "Error generating formatted code") @@ -163,6 +164,10 @@ func TestAliasParsing(t *testing.T) { "no aliases": { resultingMap: map[string]string{}, }, + "bad input": { + input: []string{"a:b,c"}, + err: errors.New(`invalid formatted alias entry "c", must be in the format "key:value"`), + }, "multiple arrays": { input: []string{ `!:Bang,a:a`, @@ -209,3 +214,91 @@ func TestAliasParsing(t *testing.T) { }) } } + +// TestEnumParseFailure +func TestEnumParseFailure(t *testing.T) { + input := `package test + // Behavior + type SomeInterface interface{ + + } + + // ENUM( + // a, + //} + type Animal int + ` + g := NewGenerator(). + WithoutSnakeToCamel() + f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) + assert.Nil(t, err, "Error parsing no struct input") + + output, err := g.Generate(f) + assert.Nil(t, err, "Error generating formatted code") + assert.Empty(t, string(output)) + if false { // Debugging statement + fmt.Println(string(output)) + } +} + +// TestUintInvalidParsing +func TestUintInvalidParsing(t *testing.T) { + input := `package test + // ENUM( + // a=-1, + //) + type Animal uint + ` + g := NewGenerator(). + WithoutSnakeToCamel() + f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) + assert.Nil(t, err, "Error parsing no struct input") + + output, err := g.Generate(f) + assert.Nil(t, err, "Error generating formatted code") + assert.Empty(t, string(output)) + if false { // Debugging statement + fmt.Println(string(output)) + } +} + +// TestIntInvalidParsing +func TestIntInvalidParsing(t *testing.T) { + input := `package test + // ENUM( + // a=c, + //) + type Animal int + ` + g := NewGenerator(). + WithoutSnakeToCamel() + f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) + assert.Nil(t, err, "Error parsing no struct input") + + output, err := g.Generate(f) + assert.Nil(t, err, "Error generating formatted code") + assert.Empty(t, string(output)) + if false { // Debugging statement + fmt.Println(string(output)) + } +} + +// TestAliasing +func TestAliasing(t *testing.T) { + input := `package test + // ENUM(a,b,CDEF) with some extra text + type Animal int + ` + g := NewGenerator(). + WithoutSnakeToCamel() + ParseAliases([]string{"CDEF:C"}) + f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) + assert.Nil(t, err, "Error parsing no struct input") + + output, err := g.Generate(f) + assert.Nil(t, err, "Error generating formatted code") + assert.Contains(t, string(output), "// AnimalC is a Animal of type CDEF.") + if false { // Debugging statement + fmt.Println(string(output)) + } +} diff --git a/go.mod b/go.mod index 32df209e..891451d7 100644 --- a/go.mod +++ b/go.mod @@ -13,29 +13,29 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.7.2 github.com/urfave/cli/v2 v2.8.1 - golang.org/x/tools v0.1.10 + golang.org/x/tools v0.1.11 ) require ( github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.1 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/google/uuid v1.2.0 // indirect + github.com/google/uuid v1.3.0 // indirect github.com/huandu/xstrings v1.3.2 // indirect - github.com/imdario/mergo v0.3.12 // indirect + github.com/imdario/mergo v0.3.13 // indirect github.com/kr/pretty v0.3.0 // indirect - github.com/mattn/go-colorable v0.1.11 // indirect + github.com/mattn/go-colorable v0.1.12 // indirect github.com/mattn/go-isatty v0.0.14 // indirect - github.com/mitchellh/copystructure v1.1.2 // indirect - github.com/mitchellh/reflectwalk v1.0.1 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect - golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect - golang.org/x/sys v0.0.0-20211103235746-7861aae1554b // indirect - golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect + golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect + golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c // indirect + golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index f0360036..1a7720f2 100644 --- a/go.sum +++ b/go.sum @@ -9,6 +9,8 @@ github.com/bradleyjkemp/cupaloy v2.3.0+incompatible h1:UafIjBvWQmS9i/xRg+CamMrnL github.com/bradleyjkemp/cupaloy v2.3.0+incompatible/go.mod h1:Au1Xw1sgaJ5iSFktEhYsS0dbQiS1B0/XMXl+42y9Ilk= github.com/cpuguy83/go-md2man/v2 v2.0.1 h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU= github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -17,10 +19,14 @@ github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/kevinburke/go-bindata v3.23.0+incompatible h1:rqNOXZlqrYhMVVAsQx8wuc+LaA73YcfbQ407wAykyS8= github.com/kevinburke/go-bindata v3.23.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -35,14 +41,20 @@ github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= github.com/mattn/go-colorable v0.1.11 h1:nQ+aFkoE2TMGc0b68U2OKSexC+eq46+XwZzWXHRmPYs= github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/goveralls v0.0.11 h1:eJXea6R6IFlL1QMKNMzDvvHv/hwGrnvyig4N+0+XiMM= github.com/mattn/goveralls v0.0.11/go.mod h1:gU8SyhNswsJKchEV93xRQxX6X3Ei4PJdQk/6ZHvrvRk= github.com/mitchellh/copystructure v1.1.2 h1:Th2TIvG1+6ma3e/0/bopBKohOTY7s4dA8V2q4EUcBJ0= github.com/mitchellh/copystructure v1.1.2/go.mod h1:EBArHfARyrSWO/+Wyr9zwEkc6XMFB9XyNgFNmRkZZU4= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -69,14 +81,19 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e h1:T8NU3HyQ8ClP4SEE+KbFlg6n0NhuTsN4MyznaarGsZM= +golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -91,6 +108,8 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211103235746-7861aae1554b h1:1VkfZQv42XQlA/jchYumAnv1UPo6RgF9rJFkTgZIxO4= golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c h1:aFV+BgZ4svzjfabn8ERpuB4JI4N6/rdy1iusx77G3oU= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -101,10 +120,14 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.11 h1:loJ25fNOEhSXfHrpoGj91eCUThwdNX6u24rO1xnNteY= +golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= @@ -115,5 +138,6 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From f579af1dcfde4faf2365ebf56a98cb4b2f41a378 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Sun, 31 Jul 2022 14:16:57 -0700 Subject: [PATCH 38/91] bump deps (#123) --- go.mod | 10 ++++------ go.sum | 51 +++++++++++++++------------------------------------ 2 files changed, 19 insertions(+), 42 deletions(-) diff --git a/go.mod b/go.mod index 891451d7..dda206db 100644 --- a/go.mod +++ b/go.mod @@ -10,10 +10,9 @@ require ( github.com/labstack/gommon v0.3.1 github.com/mattn/goveralls v0.0.11 github.com/pkg/errors v0.9.1 - github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.7.2 - github.com/urfave/cli/v2 v2.8.1 - golang.org/x/tools v0.1.11 + github.com/stretchr/testify v1.8.0 + github.com/urfave/cli/v2 v2.11.1 + golang.org/x/tools v0.1.12 ) require ( @@ -34,8 +33,7 @@ require ( github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect - golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c // indirect - golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect + golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 1a7720f2..018eb065 100644 --- a/go.sum +++ b/go.sum @@ -7,8 +7,6 @@ github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZC github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/bradleyjkemp/cupaloy v2.3.0+incompatible h1:UafIjBvWQmS9i/xRg+CamMrnLTKNzo+bdmT/oH34c2Y= github.com/bradleyjkemp/cupaloy v2.3.0+incompatible/go.mod h1:Au1Xw1sgaJ5iSFktEhYsS0dbQiS1B0/XMXl+42y9Ilk= -github.com/cpuguy83/go-md2man/v2 v2.0.1 h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU= -github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -17,14 +15,10 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/kevinburke/go-bindata v3.23.0+incompatible h1:rqNOXZlqrYhMVVAsQx8wuc+LaA73YcfbQ407wAykyS8= @@ -39,7 +33,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o= github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= -github.com/mattn/go-colorable v0.1.11 h1:nQ+aFkoE2TMGc0b68U2OKSexC+eq46+XwZzWXHRmPYs= github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= @@ -47,12 +40,8 @@ github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9 github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/goveralls v0.0.11 h1:eJXea6R6IFlL1QMKNMzDvvHv/hwGrnvyig4N+0+XiMM= github.com/mattn/goveralls v0.0.11/go.mod h1:gU8SyhNswsJKchEV93xRQxX6X3Ei4PJdQk/6ZHvrvRk= -github.com/mitchellh/copystructure v1.1.2 h1:Th2TIvG1+6ma3e/0/bopBKohOTY7s4dA8V2q4EUcBJ0= -github.com/mitchellh/copystructure v1.1.2/go.mod h1:EBArHfARyrSWO/+Wyr9zwEkc6XMFB9XyNgFNmRkZZU4= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= -github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -63,39 +52,37 @@ github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBO github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/urfave/cli/v2 v2.8.1 h1:CGuYNZF9IKZY/rfBe3lJpccSoIY1ytfvmgQT90cNOl4= -github.com/urfave/cli/v2 v2.8.1/go.mod h1:Z41J9TPoffeoqP0Iza0YbAhGvymRdZAd2uPmZ5JxRdY= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/urfave/cli/v2 v2.11.1 h1:UKK6SP7fV3eKOefbS87iT9YHefv7iB/53ih6e+GNAsE= +github.com/urfave/cli/v2 v2.11.1/go.mod h1:f8iq5LtQ/bLxafbdBSLPPNsgaW0l/2fYYEHhAyPlwvo= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e h1:T8NU3HyQ8ClP4SEE+KbFlg6n0NhuTsN4MyznaarGsZM= golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -105,12 +92,12 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211103235746-7861aae1554b h1:1VkfZQv42XQlA/jchYumAnv1UPo6RgF9rJFkTgZIxO4= golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c h1:aFV+BgZ4svzjfabn8ERpuB4JI4N6/rdy1iusx77G3oU= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -118,24 +105,16 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20= -golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= -golang.org/x/tools v0.1.11 h1:loJ25fNOEhSXfHrpoGj91eCUThwdNX6u24rO1xnNteY= -golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= +golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From bc24b100a9e3ef3c4271209e99c6ac57597446f3 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Wed, 3 Aug 2022 15:35:20 -0700 Subject: [PATCH 39/91] Add support for string enums (#124) * add support for string enums --- Makefile | 18 +- _example/strings_only.go | 6 + _example/strings_only_enum.go | 208 ++++++++++++++ _example/strings_only_test.go | 257 +++++++++++++++++ .../Test118CustomPrefixExampleFile-og | 204 ++++++++++++- generator/.snapshots/Test118ExampleFile-og | 108 ++++++- .../Test118ExampleFileMoreOptions-og | 122 +++++++- .../.snapshots/Test118NoPrefixExampleFile-og | 68 ++++- ...t118NoPrefixExampleFileWithSnakeToCamel-og | 68 ++++- .../.snapshots/TestCustomPrefixExampleFile | 204 ++++++++++++- generator/.snapshots/TestExampleFile | 108 ++++++- .../.snapshots/TestExampleFileMoreOptions | 122 +++++++- generator/.snapshots/TestNoPrefixExampleFile | 68 ++++- .../TestNoPrefixExampleFileWithSnakeToCamel | 68 ++++- generator/assets/assets.go | 25 +- generator/embedded.go | 2 +- generator/embedded_1.16.go | 2 +- generator/enum_string.tmpl | 268 ++++++++++++++++++ generator/example_test.go | 8 + generator/generator.go | 7 +- generator/generator_1.18_test.go | 2 +- generator/generator_test.go | 7 +- generator/template_funcs.go | 44 +++ go.mod | 1 + go.sum | 2 + 25 files changed, 1969 insertions(+), 28 deletions(-) create mode 100644 _example/strings_only.go create mode 100644 _example/strings_only_enum.go create mode 100644 _example/strings_only_test.go create mode 100644 generator/enum_string.tmpl diff --git a/Makefile b/Makefile index 30fdc956..930fd57d 100644 --- a/Makefile +++ b/Makefile @@ -40,7 +40,7 @@ deps: $(GOIMPORTS) PACKAGES='./generator' './_example' .PHONY: all -all: build fmt test example cover install +all: build fmt test example cover install assets build: deps $(GO) generate ./generator @@ -52,6 +52,7 @@ fmt: test: gen-test generate $(GO) test -v -race -coverprofile=coverage.out ./... + $(GO) test -v -race ./_example cover: gen-test test $(GO) tool cover -html=coverage.out -o coverage.html @@ -61,11 +62,11 @@ coveralls: $(GOVERALLS) $(GOVERALLS) -coverprofile=coverage.out -service=$(SERVICE) -repotoken=$(COVERALLS_TOKEN) clean: - $(GO) clean rm -f bin/go-enum rm -rf coverage/ rm -rf bin/ rm -rf dist/ + $(GO) clean .PHONY: assert-no-changes assert-no-changes: @@ -102,12 +103,15 @@ bin/goveralls: go.sum bin/go-bindata: go.sum $(call goinstall,github.com/kevinburke/go-bindata/go-bindata) -generate1_15: generator/assets/assets.go generator/enum.tmpl +assets: generator/enum.tmpl generator/enum_string.tmpl docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:1.15 -c 'make clean $(GOBINDATA) && $(GO) generate ./generator && make clean' -.PHONY: snapshots1_18 -snapshots1_18: - docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:1.18 -c './update-snapshots.sh || true && make clean && make' +snapshots: snapshots_1.17 +snapshots: snapshots_1.18 + +snapshots_%: + echo "##### updating snapshots for golang $* #####" + docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:$* -c './update-snapshots.sh || true' .PHONY: ci ci: docker_1.14 @@ -118,4 +122,4 @@ ci: docker_1.18 docker_%: echo "##### testing golang $* #####" - docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:$* -c 'make clean && make' + docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:$* -c 'make clean && make' \ No newline at end of file diff --git a/_example/strings_only.go b/_example/strings_only.go new file mode 100644 index 00000000..2c7e7272 --- /dev/null +++ b/_example/strings_only.go @@ -0,0 +1,6 @@ +//go:generate ../bin/go-enum -f=$GOFILE --ptr --marshal --flag --nocase --mustparse --sqlnullstr --sql --names + +package example + +// ENUM(pending, running, completed, failed) +type StrState string diff --git a/_example/strings_only_enum.go b/_example/strings_only_enum.go new file mode 100644 index 00000000..ebaaa038 --- /dev/null +++ b/_example/strings_only_enum.go @@ -0,0 +1,208 @@ +// Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example + +package example + +import ( + "database/sql/driver" + "encoding/json" + "errors" + "fmt" + "strings" +) + +const ( + // StrStatePending is a StrState of type pending. + StrStatePending StrState = "pending" + // StrStateRunning is a StrState of type running. + StrStateRunning StrState = "running" + // StrStateCompleted is a StrState of type completed. + StrStateCompleted StrState = "completed" + // StrStateFailed is a StrState of type failed. + StrStateFailed StrState = "failed" +) + +var _StrStateNames = []string{ + string(StrStatePending), + string(StrStateRunning), + string(StrStateCompleted), + string(StrStateFailed), +} + +// StrStateNames returns a list of possible string values of StrState. +func StrStateNames() []string { + tmp := make([]string, len(_StrStateNames)) + copy(tmp, _StrStateNames) + return tmp +} + +// String implements the Stringer interface. +func (x StrState) String() string { + return string(x) +} + +// String implements the Stringer interface. +func (x StrState) IsValid() bool { + _, err := ParseStrState(string(x)) + return err == nil +} + +var _StrStateValue = map[string]StrState{ + "pending": StrStatePending, + "running": StrStateRunning, + "completed": StrStateCompleted, + "failed": StrStateFailed, +} + +// ParseStrState attempts to convert a string to a StrState. +func ParseStrState(name string) (StrState, error) { + if x, ok := _StrStateValue[name]; ok { + return x, nil + } + // Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to. + if x, ok := _StrStateValue[strings.ToLower(name)]; ok { + return x, nil + } + return StrState(""), fmt.Errorf("%s is not a valid StrState, try [%s]", name, strings.Join(_StrStateNames, ", ")) +} + +// MustParseStrState converts a string to a StrState, and panics if is not valid. +func MustParseStrState(name string) StrState { + val, err := ParseStrState(name) + if err != nil { + panic(err) + } + return val +} + +func (x StrState) Ptr() *StrState { + return &x +} + +// MarshalText implements the text marshaller method. +func (x StrState) MarshalText() ([]byte, error) { + return []byte(string(x)), nil +} + +// UnmarshalText implements the text unmarshaller method. +func (x *StrState) UnmarshalText(text []byte) error { + tmp, err := ParseStrState(string(text)) + if err != nil { + return err + } + *x = tmp + return nil +} + +var _StrStateErrNilPtr = errors.New("value pointer is nil") // one per type for package clashes + +// Scan implements the Scanner interface. +func (x *StrState) Scan(value interface{}) (err error) { + if value == nil { + *x = StrState("") + return + } + + // A wider range of scannable types. + // driver.Value values at the top of the list for expediency + switch v := value.(type) { + case string: + *x, err = ParseStrState(v) + case []byte: + *x, err = ParseStrState(string(v)) + case StrState: + *x = v + case *StrState: + if v == nil { + return _StrStateErrNilPtr + } + *x = *v + case *string: + if v == nil { + return _StrStateErrNilPtr + } + *x, err = ParseStrState(*v) + default: + return errors.New("invalid type for StrState") + } + + return +} + +// Value implements the driver Valuer interface. +func (x StrState) Value() (driver.Value, error) { + return x.String(), nil +} + +// Set implements the Golang flag.Value interface func. +func (x *StrState) Set(val string) error { + v, err := ParseStrState(val) + *x = v + return err +} + +// Get implements the Golang flag.Getter interface func. +func (x *StrState) Get() interface{} { + return *x +} + +// Type implements the github.com/spf13/pFlag Value interface. +func (x *StrState) Type() string { + return "StrState" +} + +type NullStrState struct { + StrState StrState + Valid bool + Set bool +} + +func NewNullStrState(val interface{}) (x NullStrState) { + err := x.Scan(val) // yes, we ignore this error, it will just be an invalid value. + _ = err // make any errcheck linters happy + return +} + +// Scan implements the Scanner interface. +func (x *NullStrState) Scan(value interface{}) (err error) { + if value == nil { + x.StrState, x.Valid = StrState(""), false + return + } + + err = x.StrState.Scan(value) + x.Valid = (err == nil) + return +} + +// Value implements the driver Valuer interface. +func (x NullStrState) Value() (driver.Value, error) { + if !x.Valid { + return nil, nil + } + return x.StrState.String(), nil +} + +// MarshalJSON correctly serializes a NullStrState to JSON. +func (n NullStrState) MarshalJSON() ([]byte, error) { + const nullStr = "null" + if n.Valid { + return json.Marshal(n.StrState) + } + return []byte(nullStr), nil +} + +// UnmarshalJSON correctly deserializes a NullStrState from JSON. +func (n *NullStrState) UnmarshalJSON(b []byte) error { + n.Set = true + var x interface{} + err := json.Unmarshal(b, &x) + if err != nil { + return err + } + err = n.Scan(x) + return err +} diff --git a/_example/strings_only_test.go b/_example/strings_only_test.go new file mode 100644 index 00000000..2155b6ca --- /dev/null +++ b/_example/strings_only_test.go @@ -0,0 +1,257 @@ +package example + +import ( + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestStrState(t *testing.T) { + x := StrState("") + assert.Equal(t, "", x.String()) + + assert.Equal(t, StrState("pending"), StrStatePending) + assert.Equal(t, StrState("running"), StrStateRunning) + assert.Equal(t, &x, StrState("").Ptr()) +} + +func TestStrStateMustParse(t *testing.T) { + x := `avocado` + + assert.PanicsWithError(t, x+" is not a valid StrState, try [pending, running, completed, failed]", func() { MustParseStrState(x) }) + assert.NotPanics(t, func() { MustParseStrState(StrStateFailed.String()) }) +} + +func TestStrStateUnmarshal(t *testing.T) { + type testData struct { + StrStateX StrState `json:"state"` + } + tests := []struct { + name string + input string + output *testData + errorExpected bool + err error + }{ + { + name: "pending", + input: `{"state":"Pending"}`, + output: &testData{StrStateX: StrStatePending}, + errorExpected: false, + err: nil, + }, + { + name: "pendinglower", + input: `{"state":"pending"}`, + output: &testData{StrStateX: StrStatePending}, + errorExpected: false, + err: nil, + }, + { + name: "running", + input: `{"state":"RUNNING"}`, + output: &testData{StrStateX: StrStateRunning}, + errorExpected: false, + err: nil, + }, { + name: "running", + input: `{"state":"running"}`, + output: &testData{StrStateX: StrStateRunning}, + errorExpected: false, + err: nil, + }, + { + name: "completed", + input: `{"state":"Completed"}`, + output: &testData{StrStateX: StrStateCompleted}, + errorExpected: false, + err: nil, + }, + { + name: "completedlower", + input: `{"state":"completed"}`, + output: &testData{StrStateX: StrStateCompleted}, + errorExpected: false, + err: nil, + }, + { + name: "failed", + input: `{"state":"Failed"}`, + output: &testData{StrStateX: StrStateFailed}, + errorExpected: false, + err: nil, + }, + { + name: "failedlower", + input: `{"state":"failed"}`, + output: &testData{StrStateX: StrStateFailed}, + errorExpected: false, + err: nil, + }, + } + + for _, test := range tests { + t.Run(test.name, func(tt *testing.T) { + x := &testData{} + err := json.Unmarshal([]byte(test.input), x) + if !test.errorExpected { + require.NoError(tt, err, "failed unmarshalling the json.") + assert.Equal(tt, test.output.StrStateX, x.StrStateX) + } else { + require.Error(tt, err) + assert.EqualError(tt, err, test.err.Error()) + } + }) + } +} + +func TestStrStateMarshal(t *testing.T) { + type testData struct { + StrStateX StrState `json:"state"` + } + tests := []struct { + name string + input *testData + output string + errorExpected bool + err error + }{ + { + name: "black", + output: `{"state":"pending"}`, + input: &testData{StrStateX: StrStatePending}, + errorExpected: false, + err: nil, + }, + { + name: "white", + output: `{"state":"running"}`, + input: &testData{StrStateX: StrStateRunning}, + errorExpected: false, + err: nil, + }, + { + name: "red", + output: `{"state":"completed"}`, + input: &testData{StrStateX: StrStateCompleted}, + errorExpected: false, + err: nil, + }, + { + name: "green", + output: `{"state":"failed"}`, + input: &testData{StrStateX: StrStateFailed}, + errorExpected: false, + err: nil, + }, + } + + for _, test := range tests { + t.Run(test.name, func(tt *testing.T) { + raw, err := json.Marshal(test.input) + require.NoError(tt, err, "failed marshalling to json") + assert.JSONEq(tt, test.output, string(raw)) + }) + } +} + +func TestStrStateSQLExtras(t *testing.T) { + + _, err := ParseStrState(`NotAState`) + assert.Error(t, err, "Should have had an error parsing a non status") + + var ( + intVal int = 3 + strVal string = "completed" + enumVal StrState = StrStateCompleted + nullInt *int + nullInt64 *int64 + nullUint *uint + nullUint64 *uint64 + nullString *string + nullStrState *StrState + ) + + tests := map[string]struct { + input interface{} + result NullStrState + }{ + "nil": {}, + "val": { + input: StrStatePending, + result: NullStrState{ + StrState: StrStatePending, + Valid: true, + }, + }, + "ptr": { + input: &enumVal, + result: NullStrState{ + StrState: StrStateCompleted, + Valid: true, + }, + }, + "string": { + input: strVal, + result: NullStrState{ + StrState: StrStateCompleted, + Valid: true, + }, + }, + "*string": { + input: &strVal, + result: NullStrState{ + StrState: StrStateCompleted, + Valid: true, + }, + }, + "invalid string": { + input: "random value", + }, + "[]byte": { + input: []byte(StrStateRunning.String()), + result: NullStrState{ + StrState: StrStateRunning, + Valid: true, + }, + }, + "int": { + input: intVal, + }, + "*int": { + input: &intVal, + }, + "nullInt": { + input: nullInt, + }, + "nullInt64": { + input: nullInt64, + }, + "nullUint": { + input: nullUint, + }, + "nullUint64": { + input: nullUint64, + }, + "nullString": { + input: nullString, + }, + "nullImageType": { + input: nullStrState, + }, + "int as []byte": { // must have --sqlnullint flag to get this feature. + input: []byte("3"), + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + status := NewNullStrState(tc.input) + assert.Equal(t, status, tc.result) + + }) + } + +} diff --git a/generator/.snapshots/Test118CustomPrefixExampleFile-og b/generator/.snapshots/Test118CustomPrefixExampleFile-og index 8b0acde4..303980bd 100644 --- a/generator/.snapshots/Test118CustomPrefixExampleFile-og +++ b/generator/.snapshots/Test118CustomPrefixExampleFile-og @@ -1,4 +1,4 @@ -([]string) (len=3639) { +([]string) (len=3841) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -3637,5 +3637,207 @@ (string) (len=16) "\terr = n.Scan(x)", (string) (len=11) "\treturn err", (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=56) "\t// Custom_prefix_Random is a StringEnum of type random.", + (string) (len=43) "\tCustom_prefix_Random StringEnum = \"random\"", + (string) (len=56) "\t// Custom_prefix_Values is a StringEnum of type values.", + (string) (len=43) "\tCustom_prefix_Values StringEnum = \"values\"", + (string) (len=52) "\t// Custom_prefix_Here is a StringEnum of type here.", + (string) (len=39) "\tCustom_prefix_Here StringEnum = \"here\"", + (string) (len=1) ")", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x StringEnum) String() string {", + (string) (len=17) "\treturn string(x)", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x StringEnum) IsValid() bool {", + (string) (len=37) "\t_, err := ParseStringEnum(string(x))", + (string) (len=18) "\treturn err == nil", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _StringEnumValue = map[string]StringEnum{", + (string) (len=32) "\t\"random\": Custom_prefix_Random,", + (string) (len=32) "\t\"values\": Custom_prefix_Values,", + (string) (len=30) "\t\"here\": Custom_prefix_Here,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseStringEnum attempts to convert a string to a StringEnum.", + (string) (len=55) "func ParseStringEnum(name string) (StringEnum, error) {", + (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=72) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=39) "func (x StringEnum) Ptr() *StringEnum {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x StringEnum) MarshalText() ([]byte, error) {", + (string) (len=30) "\treturn []byte(string(x)), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *StringEnum) UnmarshalText(text []byte) error {", + (string) (len=42) "\ttmp, err := ParseStringEnum(string(text))", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=97) "var _StringEnumErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *StringEnum) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=21) "\t\t*x = StringEnum(\"\")", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseStringEnum(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=38) "\t\t*x, err = ParseStringEnum(string(v))", + (string) (len=17) "\tcase StringEnum:", + (string) (len=8) "\t\t*x = v", + (string) (len=18) "\tcase *StringEnum:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseStringEnum(*v)", + (string) (len=9) "\tdefault:", + (string) (len=50) "\t\treturn errors.New(\"invalid type for StringEnum\")", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x StringEnum) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=44) "func (x *StringEnum) Set(val string) error {", + (string) (len=31) "\tv, err := ParseStringEnum(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=40) "func (x *StringEnum) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=36) "func (x *StringEnum) Type() string {", + (string) (len=20) "\treturn \"StringEnum\"", + (string) (len=1) "}", + (string) "", + (string) (len=28) "type NullStringEnum struct {", + (string) (len=22) "\tStringEnum StringEnum", + (string) (len=16) "\tValid bool", + (string) (len=16) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=60) "func NewNullStringEnum(val interface{}) (x NullStringEnum) {", + (string) (len=83) "\terr := x.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=54) "\t_ = err // make any errcheck linters happy", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=62) "func (x *NullStringEnum) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=47) "\t\tx.StringEnum, x.Valid = StringEnum(\"\"), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=31) "\terr = x.StringEnum.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=55) "func (x NullStringEnum) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=33) "\treturn string(x.StringEnum), nil", + (string) (len=1) "}", + (string) "", + (string) (len=61) "// MarshalJSON correctly serializes a NullStringEnum to JSON.", + (string) (len=55) "func (n NullStringEnum) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=35) "\t\treturn json.Marshal(n.StringEnum)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=67) "// UnmarshalJSON correctly deserializes a NullStringEnum from JSON.", + (string) (len=56) "func (n *NullStringEnum) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=31) "type NullStringEnumStr struct {", + (string) (len=15) "\tNullStringEnum", + (string) (len=1) "}", + (string) "", + (string) (len=66) "func NewNullStringEnumStr(val interface{}) (x NullStringEnumStr) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x NullStringEnumStr) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=34) "\treturn x.StringEnum.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=61) "// MarshalJSON correctly serializes a NullStringEnum to JSON.", + (string) (len=58) "func (n NullStringEnumStr) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=35) "\t\treturn json.Marshal(n.StringEnum)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=67) "// UnmarshalJSON correctly deserializes a NullStringEnum from JSON.", + (string) (len=59) "func (n *NullStringEnumStr) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", (string) "" } diff --git a/generator/.snapshots/Test118ExampleFile-og b/generator/.snapshots/Test118ExampleFile-og index 274740c9..5cc24931 100644 --- a/generator/.snapshots/Test118ExampleFile-og +++ b/generator/.snapshots/Test118ExampleFile-og @@ -1,4 +1,4 @@ -([]string) (len=2195) { +([]string) (len=2301) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -2193,5 +2193,111 @@ (string) (len=53) "func (x StartNotZero) Value() (driver.Value, error) {", (string) (len=23) "\treturn x.String(), nil", (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=52) "\t// StringEnumRandom is a StringEnum of type random.", + (string) (len=39) "\tStringEnumRandom StringEnum = \"random\"", + (string) (len=52) "\t// StringEnumValues is a StringEnum of type values.", + (string) (len=39) "\tStringEnumValues StringEnum = \"values\"", + (string) (len=48) "\t// StringEnumHere is a StringEnum of type here.", + (string) (len=35) "\tStringEnumHere StringEnum = \"here\"", + (string) (len=1) ")", + (string) "", + (string) (len=32) "var _StringEnumNames = []string{", + (string) (len=26) "\tstring(StringEnumRandom),", + (string) (len=26) "\tstring(StringEnumValues),", + (string) (len=24) "\tstring(StringEnumHere),", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// StringEnumNames returns a list of possible string values of StringEnum.", + (string) (len=33) "func StringEnumNames() []string {", + (string) (len=45) "\ttmp := make([]string, len(_StringEnumNames))", + (string) (len=28) "\tcopy(tmp, _StringEnumNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x StringEnum) String() string {", + (string) (len=17) "\treturn string(x)", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x StringEnum) IsValid() bool {", + (string) (len=37) "\t_, err := ParseStringEnum(string(x))", + (string) (len=18) "\treturn err == nil", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _StringEnumValue = map[string]StringEnum{", + (string) (len=28) "\t\"random\": StringEnumRandom,", + (string) (len=28) "\t\"values\": StringEnumValues,", + (string) (len=26) "\t\"here\": StringEnumHere,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseStringEnum attempts to convert a string to a StringEnum.", + (string) (len=55) "func ParseStringEnum(name string) (StringEnum, error) {", + (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=58) "\tif x, ok := _StringEnumValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=120) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum, try [%s]\", name, strings.Join(_StringEnumNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x StringEnum) MarshalText() ([]byte, error) {", + (string) (len=30) "\treturn []byte(string(x)), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *StringEnum) UnmarshalText(text []byte) error {", + (string) (len=42) "\ttmp, err := ParseStringEnum(string(text))", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=97) "var _StringEnumErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *StringEnum) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=21) "\t\t*x = StringEnum(\"\")", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseStringEnum(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=38) "\t\t*x, err = ParseStringEnum(string(v))", + (string) (len=17) "\tcase StringEnum:", + (string) (len=8) "\t\t*x = v", + (string) (len=18) "\tcase *StringEnum:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseStringEnum(*v)", + (string) (len=9) "\tdefault:", + (string) (len=50) "\t\treturn errors.New(\"invalid type for StringEnum\")", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x StringEnum) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", (string) "" } diff --git a/generator/.snapshots/Test118ExampleFileMoreOptions-og b/generator/.snapshots/Test118ExampleFileMoreOptions-og index b334af43..21475684 100644 --- a/generator/.snapshots/Test118ExampleFileMoreOptions-og +++ b/generator/.snapshots/Test118ExampleFileMoreOptions-og @@ -1,4 +1,4 @@ -([]string) (len=2377) { +([]string) (len=2497) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -2375,5 +2375,125 @@ (string) (len=38) "func ParseStartNotZeroExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=52) "\t// StringEnumRandom is a StringEnum of type random.", + (string) (len=39) "\tStringEnumRandom StringEnum = \"random\"", + (string) (len=52) "\t// StringEnumValues is a StringEnum of type values.", + (string) (len=39) "\tStringEnumValues StringEnum = \"values\"", + (string) (len=48) "\t// StringEnumHere is a StringEnum of type here.", + (string) (len=35) "\tStringEnumHere StringEnum = \"here\"", + (string) (len=1) ")", + (string) "", + (string) (len=32) "var _StringEnumNames = []string{", + (string) (len=26) "\tstring(StringEnumRandom),", + (string) (len=26) "\tstring(StringEnumValues),", + (string) (len=24) "\tstring(StringEnumHere),", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// StringEnumNames returns a list of possible string values of StringEnum.", + (string) (len=33) "func StringEnumNames() []string {", + (string) (len=45) "\ttmp := make([]string, len(_StringEnumNames))", + (string) (len=28) "\tcopy(tmp, _StringEnumNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x StringEnum) String() string {", + (string) (len=17) "\treturn string(x)", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x StringEnum) IsValid() bool {", + (string) (len=37) "\t_, err := ParseStringEnum(string(x))", + (string) (len=18) "\treturn err == nil", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _StringEnumValue = map[string]StringEnum{", + (string) (len=28) "\t\"random\": StringEnumRandom,", + (string) (len=28) "\t\"values\": StringEnumValues,", + (string) (len=26) "\t\"here\": StringEnumHere,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseStringEnum attempts to convert a string to a StringEnum.", + (string) (len=55) "func ParseStringEnum(name string) (StringEnum, error) {", + (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=58) "\tif x, ok := _StringEnumValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=120) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum, try [%s]\", name, strings.Join(_StringEnumNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=85) "// MustParseStringEnum converts a string to a StringEnum, and panics if is not valid.", + (string) (len=50) "func MustParseStringEnum(name string) StringEnum {", + (string) (len=34) "\tval, err := ParseStringEnum(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x StringEnum) MarshalText() ([]byte, error) {", + (string) (len=30) "\treturn []byte(string(x)), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *StringEnum) UnmarshalText(text []byte) error {", + (string) (len=42) "\ttmp, err := ParseStringEnum(string(text))", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=97) "var _StringEnumErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *StringEnum) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=21) "\t\t*x = StringEnum(\"\")", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseStringEnum(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=38) "\t\t*x, err = ParseStringEnum(string(v))", + (string) (len=17) "\tcase StringEnum:", + (string) (len=8) "\t\t*x = v", + (string) (len=18) "\tcase *StringEnum:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseStringEnum(*v)", + (string) (len=9) "\tdefault:", + (string) (len=50) "\t\treturn errors.New(\"invalid type for StringEnum\")", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x StringEnum) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=36) "func ParseStringEnumExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", (string) "" } diff --git a/generator/.snapshots/Test118NoPrefixExampleFile-og b/generator/.snapshots/Test118NoPrefixExampleFile-og index 5c845855..8207acdf 100644 --- a/generator/.snapshots/Test118NoPrefixExampleFile-og +++ b/generator/.snapshots/Test118NoPrefixExampleFile-og @@ -1,4 +1,4 @@ -([]string) (len=1203) { +([]string) (len=1269) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -1201,5 +1201,71 @@ (string) (len=38) "func (x *StartNotZero) Type() string {", (string) (len=22) "\treturn \"StartNotZero\"", (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=42) "\t// Random is a StringEnum of type random.", + (string) (len=29) "\tRandom StringEnum = \"random\"", + (string) (len=42) "\t// Values is a StringEnum of type values.", + (string) (len=29) "\tValues StringEnum = \"values\"", + (string) (len=38) "\t// Here is a StringEnum of type here.", + (string) (len=25) "\tHere StringEnum = \"here\"", + (string) (len=1) ")", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x StringEnum) String() string {", + (string) (len=17) "\treturn string(x)", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x StringEnum) IsValid() bool {", + (string) (len=37) "\t_, err := ParseStringEnum(string(x))", + (string) (len=18) "\treturn err == nil", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _StringEnumValue = map[string]StringEnum{", + (string) (len=18) "\t\"random\": Random,", + (string) (len=18) "\t\"values\": Values,", + (string) (len=16) "\t\"here\": Here,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseStringEnum attempts to convert a string to a StringEnum.", + (string) (len=55) "func ParseStringEnum(name string) (StringEnum, error) {", + (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=72) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x StringEnum) MarshalText() ([]byte, error) {", + (string) (len=30) "\treturn []byte(string(x)), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *StringEnum) UnmarshalText(text []byte) error {", + (string) (len=42) "\ttmp, err := ParseStringEnum(string(text))", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=44) "func (x *StringEnum) Set(val string) error {", + (string) (len=31) "\tv, err := ParseStringEnum(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=40) "func (x *StringEnum) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=36) "func (x *StringEnum) Type() string {", + (string) (len=20) "\treturn \"StringEnum\"", + (string) (len=1) "}", (string) "" } diff --git a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og index f6e55067..9eeb1ec1 100644 --- a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og +++ b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og @@ -1,4 +1,4 @@ -([]string) (len=1203) { +([]string) (len=1269) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -1201,5 +1201,71 @@ (string) (len=38) "func (x *StartNotZero) Type() string {", (string) (len=22) "\treturn \"StartNotZero\"", (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=42) "\t// Random is a StringEnum of type random.", + (string) (len=29) "\tRandom StringEnum = \"random\"", + (string) (len=42) "\t// Values is a StringEnum of type values.", + (string) (len=29) "\tValues StringEnum = \"values\"", + (string) (len=38) "\t// Here is a StringEnum of type here.", + (string) (len=25) "\tHere StringEnum = \"here\"", + (string) (len=1) ")", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x StringEnum) String() string {", + (string) (len=17) "\treturn string(x)", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x StringEnum) IsValid() bool {", + (string) (len=37) "\t_, err := ParseStringEnum(string(x))", + (string) (len=18) "\treturn err == nil", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _StringEnumValue = map[string]StringEnum{", + (string) (len=18) "\t\"random\": Random,", + (string) (len=18) "\t\"values\": Values,", + (string) (len=16) "\t\"here\": Here,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseStringEnum attempts to convert a string to a StringEnum.", + (string) (len=55) "func ParseStringEnum(name string) (StringEnum, error) {", + (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=72) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x StringEnum) MarshalText() ([]byte, error) {", + (string) (len=30) "\treturn []byte(string(x)), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *StringEnum) UnmarshalText(text []byte) error {", + (string) (len=42) "\ttmp, err := ParseStringEnum(string(text))", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=44) "func (x *StringEnum) Set(val string) error {", + (string) (len=31) "\tv, err := ParseStringEnum(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=40) "func (x *StringEnum) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=36) "func (x *StringEnum) Type() string {", + (string) (len=20) "\treturn \"StringEnum\"", + (string) (len=1) "}", (string) "" } diff --git a/generator/.snapshots/TestCustomPrefixExampleFile b/generator/.snapshots/TestCustomPrefixExampleFile index 8b0acde4..303980bd 100644 --- a/generator/.snapshots/TestCustomPrefixExampleFile +++ b/generator/.snapshots/TestCustomPrefixExampleFile @@ -1,4 +1,4 @@ -([]string) (len=3639) { +([]string) (len=3841) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -3637,5 +3637,207 @@ (string) (len=16) "\terr = n.Scan(x)", (string) (len=11) "\treturn err", (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=56) "\t// Custom_prefix_Random is a StringEnum of type random.", + (string) (len=43) "\tCustom_prefix_Random StringEnum = \"random\"", + (string) (len=56) "\t// Custom_prefix_Values is a StringEnum of type values.", + (string) (len=43) "\tCustom_prefix_Values StringEnum = \"values\"", + (string) (len=52) "\t// Custom_prefix_Here is a StringEnum of type here.", + (string) (len=39) "\tCustom_prefix_Here StringEnum = \"here\"", + (string) (len=1) ")", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x StringEnum) String() string {", + (string) (len=17) "\treturn string(x)", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x StringEnum) IsValid() bool {", + (string) (len=37) "\t_, err := ParseStringEnum(string(x))", + (string) (len=18) "\treturn err == nil", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _StringEnumValue = map[string]StringEnum{", + (string) (len=32) "\t\"random\": Custom_prefix_Random,", + (string) (len=32) "\t\"values\": Custom_prefix_Values,", + (string) (len=30) "\t\"here\": Custom_prefix_Here,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseStringEnum attempts to convert a string to a StringEnum.", + (string) (len=55) "func ParseStringEnum(name string) (StringEnum, error) {", + (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=72) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=39) "func (x StringEnum) Ptr() *StringEnum {", + (string) (len=10) "\treturn &x", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x StringEnum) MarshalText() ([]byte, error) {", + (string) (len=30) "\treturn []byte(string(x)), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *StringEnum) UnmarshalText(text []byte) error {", + (string) (len=42) "\ttmp, err := ParseStringEnum(string(text))", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=97) "var _StringEnumErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *StringEnum) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=21) "\t\t*x = StringEnum(\"\")", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseStringEnum(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=38) "\t\t*x, err = ParseStringEnum(string(v))", + (string) (len=17) "\tcase StringEnum:", + (string) (len=8) "\t\t*x = v", + (string) (len=18) "\tcase *StringEnum:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseStringEnum(*v)", + (string) (len=9) "\tdefault:", + (string) (len=50) "\t\treturn errors.New(\"invalid type for StringEnum\")", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x StringEnum) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=44) "func (x *StringEnum) Set(val string) error {", + (string) (len=31) "\tv, err := ParseStringEnum(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=40) "func (x *StringEnum) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=36) "func (x *StringEnum) Type() string {", + (string) (len=20) "\treturn \"StringEnum\"", + (string) (len=1) "}", + (string) "", + (string) (len=28) "type NullStringEnum struct {", + (string) (len=22) "\tStringEnum StringEnum", + (string) (len=16) "\tValid bool", + (string) (len=16) "\tSet bool", + (string) (len=1) "}", + (string) "", + (string) (len=60) "func NewNullStringEnum(val interface{}) (x NullStringEnum) {", + (string) (len=83) "\terr := x.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=54) "\t_ = err // make any errcheck linters happy", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=62) "func (x *NullStringEnum) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=47) "\t\tx.StringEnum, x.Valid = StringEnum(\"\"), false", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=31) "\terr = x.StringEnum.Scan(value)", + (string) (len=23) "\tx.Valid = (err == nil)", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=55) "func (x NullStringEnum) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=46) "\t// driver.Value accepts int64 for int values.", + (string) (len=33) "\treturn string(x.StringEnum), nil", + (string) (len=1) "}", + (string) "", + (string) (len=61) "// MarshalJSON correctly serializes a NullStringEnum to JSON.", + (string) (len=55) "func (n NullStringEnum) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=35) "\t\treturn json.Marshal(n.StringEnum)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=67) "// UnmarshalJSON correctly deserializes a NullStringEnum from JSON.", + (string) (len=56) "func (n *NullStringEnum) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=31) "type NullStringEnumStr struct {", + (string) (len=15) "\tNullStringEnum", + (string) (len=1) "}", + (string) "", + (string) (len=66) "func NewNullStringEnumStr(val interface{}) (x NullStringEnumStr) {", + (string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x NullStringEnumStr) Value() (driver.Value, error) {", + (string) (len=14) "\tif !x.Valid {", + (string) (len=17) "\t\treturn nil, nil", + (string) (len=2) "\t}", + (string) (len=34) "\treturn x.StringEnum.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=61) "// MarshalJSON correctly serializes a NullStringEnum to JSON.", + (string) (len=58) "func (n NullStringEnumStr) MarshalJSON() ([]byte, error) {", + (string) (len=23) "\tconst nullStr = \"null\"", + (string) (len=13) "\tif n.Valid {", + (string) (len=35) "\t\treturn json.Marshal(n.StringEnum)", + (string) (len=2) "\t}", + (string) (len=28) "\treturn []byte(nullStr), nil", + (string) (len=1) "}", + (string) "", + (string) (len=67) "// UnmarshalJSON correctly deserializes a NullStringEnum from JSON.", + (string) (len=59) "func (n *NullStringEnumStr) UnmarshalJSON(b []byte) error {", + (string) (len=13) "\tn.Set = true", + (string) (len=18) "\tvar x interface{}", + (string) (len=29) "\terr := json.Unmarshal(b, &x)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=16) "\terr = n.Scan(x)", + (string) (len=11) "\treturn err", + (string) (len=1) "}", (string) "" } diff --git a/generator/.snapshots/TestExampleFile b/generator/.snapshots/TestExampleFile index 274740c9..5cc24931 100644 --- a/generator/.snapshots/TestExampleFile +++ b/generator/.snapshots/TestExampleFile @@ -1,4 +1,4 @@ -([]string) (len=2195) { +([]string) (len=2301) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -2193,5 +2193,111 @@ (string) (len=53) "func (x StartNotZero) Value() (driver.Value, error) {", (string) (len=23) "\treturn x.String(), nil", (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=52) "\t// StringEnumRandom is a StringEnum of type random.", + (string) (len=39) "\tStringEnumRandom StringEnum = \"random\"", + (string) (len=52) "\t// StringEnumValues is a StringEnum of type values.", + (string) (len=39) "\tStringEnumValues StringEnum = \"values\"", + (string) (len=48) "\t// StringEnumHere is a StringEnum of type here.", + (string) (len=35) "\tStringEnumHere StringEnum = \"here\"", + (string) (len=1) ")", + (string) "", + (string) (len=32) "var _StringEnumNames = []string{", + (string) (len=26) "\tstring(StringEnumRandom),", + (string) (len=26) "\tstring(StringEnumValues),", + (string) (len=24) "\tstring(StringEnumHere),", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// StringEnumNames returns a list of possible string values of StringEnum.", + (string) (len=33) "func StringEnumNames() []string {", + (string) (len=45) "\ttmp := make([]string, len(_StringEnumNames))", + (string) (len=28) "\tcopy(tmp, _StringEnumNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x StringEnum) String() string {", + (string) (len=17) "\treturn string(x)", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x StringEnum) IsValid() bool {", + (string) (len=37) "\t_, err := ParseStringEnum(string(x))", + (string) (len=18) "\treturn err == nil", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _StringEnumValue = map[string]StringEnum{", + (string) (len=28) "\t\"random\": StringEnumRandom,", + (string) (len=28) "\t\"values\": StringEnumValues,", + (string) (len=26) "\t\"here\": StringEnumHere,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseStringEnum attempts to convert a string to a StringEnum.", + (string) (len=55) "func ParseStringEnum(name string) (StringEnum, error) {", + (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=58) "\tif x, ok := _StringEnumValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=120) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum, try [%s]\", name, strings.Join(_StringEnumNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x StringEnum) MarshalText() ([]byte, error) {", + (string) (len=30) "\treturn []byte(string(x)), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *StringEnum) UnmarshalText(text []byte) error {", + (string) (len=42) "\ttmp, err := ParseStringEnum(string(text))", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=97) "var _StringEnumErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *StringEnum) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=21) "\t\t*x = StringEnum(\"\")", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseStringEnum(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=38) "\t\t*x, err = ParseStringEnum(string(v))", + (string) (len=17) "\tcase StringEnum:", + (string) (len=8) "\t\t*x = v", + (string) (len=18) "\tcase *StringEnum:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseStringEnum(*v)", + (string) (len=9) "\tdefault:", + (string) (len=50) "\t\treturn errors.New(\"invalid type for StringEnum\")", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x StringEnum) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", (string) "" } diff --git a/generator/.snapshots/TestExampleFileMoreOptions b/generator/.snapshots/TestExampleFileMoreOptions index b334af43..21475684 100644 --- a/generator/.snapshots/TestExampleFileMoreOptions +++ b/generator/.snapshots/TestExampleFileMoreOptions @@ -1,4 +1,4 @@ -([]string) (len=2377) { +([]string) (len=2497) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -2375,5 +2375,125 @@ (string) (len=38) "func ParseStartNotZeroExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=52) "\t// StringEnumRandom is a StringEnum of type random.", + (string) (len=39) "\tStringEnumRandom StringEnum = \"random\"", + (string) (len=52) "\t// StringEnumValues is a StringEnum of type values.", + (string) (len=39) "\tStringEnumValues StringEnum = \"values\"", + (string) (len=48) "\t// StringEnumHere is a StringEnum of type here.", + (string) (len=35) "\tStringEnumHere StringEnum = \"here\"", + (string) (len=1) ")", + (string) "", + (string) (len=32) "var _StringEnumNames = []string{", + (string) (len=26) "\tstring(StringEnumRandom),", + (string) (len=26) "\tstring(StringEnumValues),", + (string) (len=24) "\tstring(StringEnumHere),", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// StringEnumNames returns a list of possible string values of StringEnum.", + (string) (len=33) "func StringEnumNames() []string {", + (string) (len=45) "\ttmp := make([]string, len(_StringEnumNames))", + (string) (len=28) "\tcopy(tmp, _StringEnumNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x StringEnum) String() string {", + (string) (len=17) "\treturn string(x)", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x StringEnum) IsValid() bool {", + (string) (len=37) "\t_, err := ParseStringEnum(string(x))", + (string) (len=18) "\treturn err == nil", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _StringEnumValue = map[string]StringEnum{", + (string) (len=28) "\t\"random\": StringEnumRandom,", + (string) (len=28) "\t\"values\": StringEnumValues,", + (string) (len=26) "\t\"here\": StringEnumHere,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseStringEnum attempts to convert a string to a StringEnum.", + (string) (len=55) "func ParseStringEnum(name string) (StringEnum, error) {", + (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=121) "\t// Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to.", + (string) (len=58) "\tif x, ok := _StringEnumValue[strings.ToLower(name)]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=120) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum, try [%s]\", name, strings.Join(_StringEnumNames, \", \"))", + (string) (len=1) "}", + (string) "", + (string) (len=85) "// MustParseStringEnum converts a string to a StringEnum, and panics if is not valid.", + (string) (len=50) "func MustParseStringEnum(name string) StringEnum {", + (string) (len=34) "\tval, err := ParseStringEnum(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x StringEnum) MarshalText() ([]byte, error) {", + (string) (len=30) "\treturn []byte(string(x)), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *StringEnum) UnmarshalText(text []byte) error {", + (string) (len=42) "\ttmp, err := ParseStringEnum(string(text))", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=97) "var _StringEnumErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *StringEnum) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=21) "\t\t*x = StringEnum(\"\")", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseStringEnum(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=38) "\t\t*x, err = ParseStringEnum(string(v))", + (string) (len=17) "\tcase StringEnum:", + (string) (len=8) "\t\t*x = v", + (string) (len=18) "\tcase *StringEnum:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseStringEnum(*v)", + (string) (len=9) "\tdefault:", + (string) (len=50) "\t\treturn errors.New(\"invalid type for StringEnum\")", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x StringEnum) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=36) "func ParseStringEnumExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", (string) "" } diff --git a/generator/.snapshots/TestNoPrefixExampleFile b/generator/.snapshots/TestNoPrefixExampleFile index 5c845855..8207acdf 100644 --- a/generator/.snapshots/TestNoPrefixExampleFile +++ b/generator/.snapshots/TestNoPrefixExampleFile @@ -1,4 +1,4 @@ -([]string) (len=1203) { +([]string) (len=1269) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -1201,5 +1201,71 @@ (string) (len=38) "func (x *StartNotZero) Type() string {", (string) (len=22) "\treturn \"StartNotZero\"", (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=42) "\t// Random is a StringEnum of type random.", + (string) (len=29) "\tRandom StringEnum = \"random\"", + (string) (len=42) "\t// Values is a StringEnum of type values.", + (string) (len=29) "\tValues StringEnum = \"values\"", + (string) (len=38) "\t// Here is a StringEnum of type here.", + (string) (len=25) "\tHere StringEnum = \"here\"", + (string) (len=1) ")", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x StringEnum) String() string {", + (string) (len=17) "\treturn string(x)", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x StringEnum) IsValid() bool {", + (string) (len=37) "\t_, err := ParseStringEnum(string(x))", + (string) (len=18) "\treturn err == nil", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _StringEnumValue = map[string]StringEnum{", + (string) (len=18) "\t\"random\": Random,", + (string) (len=18) "\t\"values\": Values,", + (string) (len=16) "\t\"here\": Here,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseStringEnum attempts to convert a string to a StringEnum.", + (string) (len=55) "func ParseStringEnum(name string) (StringEnum, error) {", + (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=72) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x StringEnum) MarshalText() ([]byte, error) {", + (string) (len=30) "\treturn []byte(string(x)), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *StringEnum) UnmarshalText(text []byte) error {", + (string) (len=42) "\ttmp, err := ParseStringEnum(string(text))", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=44) "func (x *StringEnum) Set(val string) error {", + (string) (len=31) "\tv, err := ParseStringEnum(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=40) "func (x *StringEnum) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=36) "func (x *StringEnum) Type() string {", + (string) (len=20) "\treturn \"StringEnum\"", + (string) (len=1) "}", (string) "" } diff --git a/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel b/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel index f6e55067..9eeb1ec1 100644 --- a/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel +++ b/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel @@ -1,4 +1,4 @@ -([]string) (len=1203) { +([]string) (len=1269) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -1201,5 +1201,71 @@ (string) (len=38) "func (x *StartNotZero) Type() string {", (string) (len=22) "\treturn \"StartNotZero\"", (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=42) "\t// Random is a StringEnum of type random.", + (string) (len=29) "\tRandom StringEnum = \"random\"", + (string) (len=42) "\t// Values is a StringEnum of type values.", + (string) (len=29) "\tValues StringEnum = \"values\"", + (string) (len=38) "\t// Here is a StringEnum of type here.", + (string) (len=25) "\tHere StringEnum = \"here\"", + (string) (len=1) ")", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x StringEnum) String() string {", + (string) (len=17) "\treturn string(x)", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x StringEnum) IsValid() bool {", + (string) (len=37) "\t_, err := ParseStringEnum(string(x))", + (string) (len=18) "\treturn err == nil", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _StringEnumValue = map[string]StringEnum{", + (string) (len=18) "\t\"random\": Random,", + (string) (len=18) "\t\"values\": Values,", + (string) (len=16) "\t\"here\": Here,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseStringEnum attempts to convert a string to a StringEnum.", + (string) (len=55) "func ParseStringEnum(name string) (StringEnum, error) {", + (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=72) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x StringEnum) MarshalText() ([]byte, error) {", + (string) (len=30) "\treturn []byte(string(x)), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *StringEnum) UnmarshalText(text []byte) error {", + (string) (len=42) "\ttmp, err := ParseStringEnum(string(text))", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=44) "func (x *StringEnum) Set(val string) error {", + (string) (len=31) "\tv, err := ParseStringEnum(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=40) "func (x *StringEnum) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=36) "func (x *StringEnum) Type() string {", + (string) (len=20) "\treturn \"StringEnum\"", + (string) (len=1) "}", (string) "" } diff --git a/generator/assets/assets.go b/generator/assets/assets.go index c752feea..35788873 100644 --- a/generator/assets/assets.go +++ b/generator/assets/assets.go @@ -1,6 +1,7 @@ // Code generated by go-bindata. DO NOT EDIT. // sources: // enum.tmpl (8.705kB) +// enum_string.tmpl (6.809kB) package assets @@ -89,6 +90,26 @@ func enumTmpl() (*asset, error) { return a, nil } +var _enum_stringTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x58\xdf\x8f\xe3\xb6\x11\x7e\xb6\xfe\x8a\x89\x90\xa4\xd2\x42\x91\x5b\xb4\xe8\xc3\x15\x7e\x08\x82\xf4\x90\xa0\xdd\x1e\xba\xd7\xbc\x1c\x0e\x0b\xae\x34\x5a\x33\x4b\x91\x0a\x49\xdb\x72\x05\xfd\xef\xc5\x90\x94\x2c\xcb\x5a\xef\xa5\xd9\xa6\x28\x7a\x0f\x07\x53\x24\x87\xdf\x7c\xfc\xe6\x07\xb7\xeb\xbe\x82\x12\x2b\x2e\x11\x62\x94\xbb\xfa\xde\x58\xcd\xe5\x63\xdc\xf7\x51\xa1\xa4\xb1\x90\x44\xb4\xe4\x73\x9a\xbb\x65\x35\xc2\x9b\x0d\xe4\x34\xc8\xdd\xe8\xab\xbe\x3f\xcd\xbf\x3f\x36\x93\x79\x37\x1a\xe7\xf7\x4c\x1b\x9a\x2b\x79\x61\x21\x16\xcc\x58\x55\x55\x06\x6d\x0c\xf1\x6f\xe3\xb0\x0c\x34\x93\x8f\x08\x9f\xeb\xef\x64\x89\x6d\x46\x9b\xc4\x6e\x62\xf1\x07\x1a\x1a\xe8\xfb\x68\xd5\x75\xc0\x2b\xc0\x9f\xc2\x1a\x0f\x26\xbe\x8f\xfb\x7e\xbd\x86\xbb\x27\xde\x34\x58\x82\x9f\xea\x3a\x14\x06\xdd\x44\xd7\x85\xe5\xef\x34\x56\xbc\xc5\x92\xb6\xf5\x3d\x70\x03\x8c\x26\x07\x27\xfb\x1e\x54\x05\x96\x1c\x18\xb7\xfc\x9d\x1d\xfc\x14\x19\x94\xa5\x07\xf1\x15\xa1\x08\x0b\xbe\x51\x75\x8d\xd2\xd2\xc4\xf4\xa8\xc9\x67\x5a\xef\xb7\x02\xc0\xb3\x60\xce\x71\x6c\x20\xbe\x84\x10\x47\x27\x53\x69\x14\x79\x32\x72\xc9\x6a\xc7\xce\x9e\x69\xb8\xef\xba\xd3\x2d\xf5\xfd\xad\x9b\xda\x40\xd7\x49\x56\xf3\xea\xe8\x09\xed\xfb\x28\x72\x50\x2f\x97\x6a\xb4\x3b\x2d\x89\x16\xc1\x8d\x25\x36\x1a\x65\x0c\x7f\x10\x08\x5e\x20\x9e\x5c\x43\x33\xe7\xfb\xf3\xa8\xda\xc9\x62\xc9\x68\x92\xc2\x87\x8f\x61\x77\x17\xad\x6c\xdd\xd0\xd5\xd6\xec\x09\x93\xe1\x7b\x06\x02\x65\xb2\x04\x3e\x4d\xa3\x55\xa1\x9a\x63\x62\xeb\x26\x5b\x74\x2f\x8d\x56\x1e\x35\xd8\xba\x89\x9c\x9e\x50\x96\x4e\x5a\xe4\xe5\x9d\x3f\x98\xd7\x8d\x40\xba\x10\x03\x76\x8b\xe1\x2b\x6a\xe0\xd2\xa2\xae\x58\x81\x01\x7f\xd2\xce\x5c\x48\xc3\xda\x24\x85\x93\x0f\xe1\x40\xff\x21\x69\xd3\xe8\xb5\xce\xfa\xce\xfc\xc0\x04\x2f\x93\x14\x1e\x94\x12\x74\xd4\x7d\x06\xa8\x35\x31\xf6\x8e\x69\x83\xe7\x1b\x92\x11\xc1\x89\x05\x5a\xbd\xd9\x80\xe4\x82\x50\x2d\x88\xc2\x85\x93\x13\x05\xec\x64\xcd\x9a\x51\x17\x90\x0b\x75\x40\x5d\x30\x83\x10\xd8\x5b\x38\x13\x98\xb5\x58\x37\xe4\x9c\x82\x42\xc9\x3d\x6a\x0b\x6c\x20\xc7\x2a\x17\x52\x0b\xca\x58\x82\x4f\xd2\x0d\x3b\x53\x48\xce\x27\x9d\xdf\x4a\xa7\x44\x02\xaf\xa0\xcd\x40\x3d\x11\x0d\x4b\xde\x7c\x20\x43\x1f\xff\x44\x2b\xba\x68\x35\x30\xd1\x66\x8e\x85\x55\xdf\x75\x2e\x4e\xd4\xe0\x19\x05\xea\x37\xf4\x9b\x4b\x83\xd2\x70\xcb\xf7\x08\x0d\xe1\xcb\xa0\x24\x07\x0c\x36\x4c\x33\x8b\x20\x94\x7a\xda\x35\xe4\x55\xa3\x71\x8f\xd2\xc2\x4e\x4a\x2c\xd0\x18\xa6\x8f\x50\x28\x1f\x23\x03\x6d\x44\xc0\xc8\x04\xaf\xe0\x80\x50\x2a\xf9\x1b\x0b\x12\xb1\x04\xab\xf2\x4f\xf0\xc4\xef\x36\xf9\x7b\xf5\x17\xb2\xea\x28\x4a\xaf\xb9\x36\x24\x84\x55\xf0\xd2\xc5\x31\xa9\x7f\x58\x3b\xe3\x3c\x8e\xd3\x0c\xaa\xda\xe6\xdf\x12\xbd\x55\x12\x7f\x61\x28\x11\x4a\x45\xb7\xb8\x27\xf5\xc1\xfc\x22\xac\x3e\xc2\x87\x2f\xcc\xc7\x38\x03\x32\x9f\xc1\x00\xf2\x7b\xc5\x97\xc3\x36\x83\x38\x83\x98\x54\xe9\x00\x0a\x83\xaf\x0a\x29\x00\x49\xa7\xb9\xb5\x1f\x13\x62\xbd\x33\xd6\xdd\x26\xdd\xf5\x7a\x0d\x7f\xdd\x19\xbb\x24\xe4\x20\x5e\x73\x55\xbd\x19\x30\x59\x42\xc3\x24\x2f\x0c\x59\x0f\xb8\x1c\xaa\xa0\xec\x67\xec\x9f\xab\x7b\x76\x76\x17\xad\xf6\x4c\x5c\x8d\xed\xe0\x21\xd5\x3b\xad\xe1\x33\x17\xd2\x4e\x03\x0e\x4c\x82\x5a\xa7\xd1\xea\xc4\xe9\x9e\x09\x97\xfd\x3c\x1b\x03\x17\x8d\xd5\xc4\xc2\x73\xf9\xe6\x9d\xd5\x49\x0a\x37\x97\xe0\x82\xd1\x2f\xdb\x05\x9b\x35\xd3\x66\xcb\xc4\xc0\xae\x1f\xbd\xc7\xd6\xce\x33\x9f\xa5\x6f\x61\xb5\x40\x0d\x35\xda\xad\x2a\x9f\xcf\x7e\x13\x53\x49\x0a\xc9\x87\x8f\x0f\x47\x8b\xd3\x3c\x10\x50\xf9\x89\x49\xf2\xcb\x86\x74\xb7\x5e\xc3\x3f\x64\xfd\x02\xa2\x9d\xbc\x82\xe9\x66\x0e\xea\xcc\x5e\xe2\x0c\xf8\xf3\x53\x0f\x2c\xd4\xb4\x4f\x49\xd3\xb4\x39\x5d\xbc\xd2\x53\xee\x76\x57\x7a\xd3\xc2\xc6\x95\xb3\x61\xc2\xbb\x37\xbb\x08\xa5\x21\x37\x3f\x09\xf7\x9f\xdc\x09\xc1\xa5\x1d\x7f\x1b\xab\xfb\x7e\x29\xfb\x7f\xab\xf5\x2d\x17\xef\xac\x86\x8d\xc7\x6f\xf2\x5b\x3c\x24\xb1\xef\xb9\x1a\xe5\x8a\x94\x53\x39\x17\x71\x0a\xeb\x35\x28\x89\xd0\xa0\xf6\x7d\x51\xa5\x34\x34\xac\x78\x62\x8f\x08\x85\x60\x66\x8b\xc6\x97\xbe\x82\xc9\x8b\xc2\x57\x30\x29\x97\xeb\xde\x05\xcb\xb4\x36\xf1\x18\xc6\xe5\x5d\x9f\x02\xc9\xfc\xbc\x10\xf8\x45\x9b\x13\x77\x8e\xac\xcb\x8c\x32\xb2\x4a\x8c\xba\x94\xff\x35\x1c\x78\x89\x3a\xb4\x9b\xaa\x02\x43\x00\x19\x35\x37\xe4\x9b\xc9\xdd\xaa\x52\xf3\x3d\x6a\xdf\x74\x0e\xdd\x0e\xb3\x5e\x3d\xaa\x71\x0d\xe2\x16\x7d\x7b\x44\x64\x60\xdb\x60\xc9\x51\x16\xc7\x68\x65\x0e\xdc\x16\x5b\xd8\x93\x0c\x7c\xeb\x96\x90\x61\x87\xdc\xd5\x1e\xaf\x83\x37\x0e\xb4\x17\xcc\xb2\x5e\xf6\x69\xd8\xe0\x95\xf6\xf2\x86\x20\xb0\x7d\x3a\x6c\x3c\x9f\x7f\x33\xd0\xb4\x0f\xd3\x37\x97\xf3\x44\x6d\xa0\x95\x58\x1d\x94\xf7\x9c\x7c\xa2\x15\x09\xd5\x5b\xbd\x19\xcd\x9e\x1c\xfc\x77\xcd\x5d\xf3\xf2\x86\x78\x29\xb1\x62\x3b\x61\xdf\x9c\x45\xcd\x28\x63\x2e\x7d\xbd\x18\xc5\x3a\x2b\x1c\x3e\x65\x8e\x71\x15\x3d\x1b\x4c\xc6\x27\xce\xf5\x1a\xbc\x12\x66\xda\xf6\x2a\xf1\x73\x9f\xd4\xd9\xb9\x95\x94\xd5\xa6\xfa\x5a\xc8\x6d\x6d\x3e\xf4\x9b\xd9\x18\xf5\xbe\x80\xfe\x37\xd0\x8c\x29\x36\xbb\x4c\x41\xe1\xc7\x50\x15\x2a\xc1\x1e\x03\xc6\x3b\xbc\x48\xbc\x6f\x95\x60\xf2\x11\x68\x51\x08\xad\x11\x25\x10\xc8\x6b\xa9\x01\x2d\x65\x86\xb1\x92\x8e\x59\x77\x7f\x35\xe7\xee\x99\x48\xa3\x51\xf5\x93\x04\xeb\xcb\xc4\xdb\xeb\x18\xdf\xa2\xb5\x53\x2a\x5f\x02\xf9\x16\xa9\x64\x4d\x52\xd7\x84\xc4\x9b\x36\x9c\xe9\x9e\xc6\xb3\x43\x1f\xb9\xdd\xee\x1e\xf2\x42\xd5\x6b\xd3\x54\xbf\xfb\xfd\xba\xf9\x33\x11\x39\xe3\xe8\xca\xc9\x64\x74\xe9\x71\x12\xcf\x94\xff\x6c\xfd\x58\x28\x1d\x74\x8f\x2e\x82\x6e\x77\x42\xcc\x9a\x03\x63\xf5\xae\xb0\x1d\xb5\x5e\xd3\xef\xb3\x61\xb4\x72\x0f\x19\x58\xd1\x3f\x7a\xcb\x74\xdd\xfa\x06\xbe\x2e\x4b\x30\xaa\x26\xc7\x2a\x05\xcc\x3d\x21\x0e\x5b\xb4\x5b\x2a\x2f\x5b\x6e\x42\x72\x3f\x30\x03\x06\x2d\x94\x3b\xe7\xd3\xa9\x5e\xd3\x48\x69\xd7\x80\xdd\xac\xfb\xd0\xd7\x4f\xda\x91\xd5\x1d\xda\xd5\x6a\x72\xa6\x7b\x0a\xfa\xe6\xd0\x11\x78\x8b\x87\x4b\x97\x9c\xba\xce\xab\x4e\xbb\xe0\xb9\x8b\x8b\x20\xb8\x36\x1f\x0a\x96\x2b\x91\x47\xea\x78\x0f\x08\xfc\x51\x2a\x8d\xde\x15\x27\xd3\x0c\xb8\x85\x03\x17\x02\x7e\xdc\x19\x0b\x0f\x08\x54\x26\x43\x8e\xf2\x25\x22\x5a\xdd\xfb\x52\x4c\x86\xe8\x55\x0c\x4c\x1e\x69\x5c\x6c\xb1\x78\x02\xe1\x80\x19\xd8\xb2\xa6\x39\x0e\x97\x3b\xbc\x37\x7f\x66\xd1\x5d\xf2\xe9\x17\x14\xde\x36\x9f\xb7\xca\x6d\xee\x6f\x7d\xa9\x1e\x67\x50\x31\x61\x70\x56\x96\x7d\xb2\x9f\x5b\xca\x4f\xa8\xd2\x68\x75\xb2\x9a\x9c\x1e\xb7\xe9\x94\x8b\x90\x82\x26\x62\xfe\x25\xc9\x72\x89\xa6\x17\x13\x26\xaf\xe0\xb3\x00\x74\xd2\xd0\x49\x2e\x86\x97\xda\x65\x73\xc1\x8a\x02\xe9\x1d\xcd\xa5\xfd\xe3\x1f\x5c\xb1\x22\xe4\xbe\xe5\xc8\x2f\x52\xf0\x8c\xa2\x57\x2d\x0f\xff\x29\x8f\xc7\x9a\x36\xbf\xde\x85\x12\xe7\x03\xf5\xea\x1b\xe3\xfb\xbb\xbf\xdd\x42\xa1\xb4\xc6\xc2\x8a\x23\x18\xd4\x9c\x09\xfe\x4f\x6a\xd0\x96\x32\x95\x55\x40\x3b\x06\x37\xe5\xa2\x9b\x13\xd3\xcb\x6f\x0e\xff\xe7\x50\xd2\xd5\x9d\x6b\x9a\x63\xfa\x19\x3b\xf7\x65\x10\xe6\xc4\xfd\x1f\x8d\x92\x79\xb0\x99\xc8\xf9\x9d\x4d\x49\x09\x8f\x98\x60\x78\xf9\x09\x33\x73\xb8\xc4\x97\x5c\xae\xb4\xaa\x67\x4e\x2f\x46\xfd\xd9\x09\xc9\xc3\xe5\x8b\x46\xe6\x54\xc4\x37\x60\xf5\x0e\xe9\xa9\xaa\xa1\x9d\xe6\x87\x31\x11\x3a\x7f\x47\x6b\xc9\x43\x06\x5f\xb6\xf3\x17\xce\xc2\x03\xc7\x87\xbd\xf4\x71\xde\xa6\xb3\xfa\x7c\x2e\x87\x73\x65\xd0\x6b\xfc\xe7\x57\x2d\xba\x3a\x5f\xb8\xc8\xb9\xcb\xf9\xeb\x05\xe2\xce\xea\x4f\xac\x11\x74\x93\x74\xc2\xab\xd6\x87\xb3\x9c\xff\x5a\x01\xee\x90\xfe\xca\x31\xfe\x2b\x06\xb6\x73\xef\xff\x31\xb6\x9d\xe3\xff\x2b\xe1\x7d\x16\xdd\xbe\x37\xfd\x57\x00\x00\x00\xff\xff\x3c\xf0\x77\x54\x99\x1a\x00\x00") + +func enum_stringTmplBytes() ([]byte, error) { + return bindataRead( + _enum_stringTmpl, + "enum_string.tmpl", + ) +} + +func enum_stringTmpl() (*asset, error) { + bytes, err := enum_stringTmplBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "enum_string.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfe, 0xa9, 0x87, 0x91, 0xfe, 0x92, 0x4a, 0x77, 0xd1, 0x36, 0x45, 0x3b, 0x9a, 0x5b, 0x45, 0x6f, 0x66, 0xf9, 0x6e, 0x76, 0xbd, 0xdd, 0xbd, 0x93, 0xbc, 0xc8, 0x1c, 0x97, 0x7, 0x89, 0xb3, 0xd1}} + return a, nil +} + // Asset loads and returns the asset for the given name. // It returns an error if the asset could not be found or // could not be loaded. @@ -180,7 +201,8 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "enum.tmpl": enumTmpl, + "enum.tmpl": enumTmpl, + "enum_string.tmpl": enum_stringTmpl, } // AssetDebug is true if the assets were built with the debug flag enabled. @@ -228,6 +250,7 @@ type bintree struct { var _bintree = &bintree{nil, map[string]*bintree{ "enum.tmpl": {enumTmpl, map[string]*bintree{}}, + "enum_string.tmpl": {enum_stringTmpl, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory. diff --git a/generator/embedded.go b/generator/embedded.go index 47d6bbfd..3f659d9e 100644 --- a/generator/embedded.go +++ b/generator/embedded.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-bindata -nometadata -o assets/assets.go -pkg=assets enum.tmpl +//go:generate ../bin/go-bindata -nometadata -o assets/assets.go -pkg=assets enum.tmpl enum_string.tmpl //go:build !go1.16 // +build !go1.16 diff --git a/generator/embedded_1.16.go b/generator/embedded_1.16.go index 83b12a94..ea64de94 100644 --- a/generator/embedded_1.16.go +++ b/generator/embedded_1.16.go @@ -8,7 +8,7 @@ import ( "text/template" ) -//go:embed enum.tmpl +//go:embed enum.tmpl enum_string.tmpl var content embed.FS func (g *Generator) addEmbeddedTemplates() { diff --git a/generator/enum_string.tmpl b/generator/enum_string.tmpl new file mode 100644 index 00000000..b53218c3 --- /dev/null +++ b/generator/enum_string.tmpl @@ -0,0 +1,268 @@ +{{- define "enum_string"}} +const ( +{{- $enumName := .enum.Name -}} +{{- $enumType := .enum.Type -}} +{{- $vars := dict "lastoffset" "0" -}} +{{ range $rIndex, $value := .enum.Values }} + {{ if eq $value.Name "_"}}// Skipped value.{{else}}// {{$value.PrefixedName}} is a {{$enumName}} of type {{$value.RawName}}.{{end}} + {{- if $value.Comment}} + // {{$value.Comment}} + {{- end}} + {{$value.PrefixedName}} {{$enumName}} = "{{$value.RawName}}" +{{- end}} +) + +{{ if .names }}var _{{.enum.Name}}Names = {{namify .enum}} + +// {{.enum.Name}}Names returns a list of possible string values of {{.enum.Name}}. +func {{.enum.Name}}Names() []string { + tmp := make([]string, len(_{{.enum.Name}}Names)) + copy(tmp, _{{.enum.Name}}Names) + return tmp +} +{{ end -}} + +// String implements the Stringer interface. +func (x {{.enum.Name}}) String() string { + return string(x) +} + +// String implements the Stringer interface. +func (x {{.enum.Name}}) IsValid() bool { + _, err := Parse{{.enum.Name}}(string(x)) + return err == nil +} + +var _{{.enum.Name}}Value = {{ unmapify .enum .lowercase }} + +// Parse{{.enum.Name}} attempts to convert a string to a {{.enum.Name}}. +func Parse{{.enum.Name}}(name string) ({{.enum.Name}}, error) { + if x, ok := _{{.enum.Name}}Value[name]; ok { + return x, nil + }{{if .nocase }} + // Case insensitive parse, do a separate lookup to prevent unnecessary cost of lowercasing a string if we don't need to. + if x, ok := _{{.enum.Name}}Value[strings.ToLower(name)]; ok { + return x, nil + }{{- end}} + {{if .names -}} + return {{.enum.Name}}(""), fmt.Errorf("%s is not a valid {{.enum.Name}}, try [%s]", name, strings.Join(_{{.enum.Name}}Names, ", ")) + {{- else -}} + return {{.enum.Name}}(""), fmt.Errorf("%s is not a valid {{.enum.Name}}", name) + {{- end}} +} + +{{ if .mustparse }} +// MustParse{{.enum.Name}} converts a string to a {{.enum.Name}}, and panics if is not valid. +func MustParse{{.enum.Name}}(name string) {{.enum.Name}} { + val, err := Parse{{.enum.Name}}(name) + if err != nil { + panic(err) + } + return val +} +{{end}} + +{{ if .ptr }} +func (x {{.enum.Name}}) Ptr() *{{.enum.Name}} { + return &x +} +{{end}} + +{{ if .marshal }} +// MarshalText implements the text marshaller method. +func (x {{.enum.Name}}) MarshalText() ([]byte, error) { + return []byte(string(x)), nil +} + +// UnmarshalText implements the text unmarshaller method. +func (x *{{.enum.Name}}) UnmarshalText(text []byte) error { + tmp, err := Parse{{.enum.Name}}(string(text)) + if err != nil { + return err + } + *x = tmp + return nil +} +{{end}} + +{{ if or .sql .sqlnullint .sqlnullstr}} +var _{{.enum.Name}}ErrNilPtr = errors.New("value pointer is nil") // one per type for package clashes + +// Scan implements the Scanner interface. +func (x *{{.enum.Name}}) Scan(value interface{}) (err error) { + if value == nil { + *x = {{.enum.Name}}("") + return + } + + // A wider range of scannable types. + // driver.Value values at the top of the list for expediency + switch v := value.(type) { + case string: + *x, err = Parse{{.enum.Name}}(v) + case []byte: + *x, err = Parse{{.enum.Name}}(string(v)) + case {{.enum.Name}}: + *x = v + case *{{.enum.Name}}: + if v == nil{ + return _{{.enum.Name}}ErrNilPtr + } + *x = *v + case *string: + if v == nil{ + return _{{.enum.Name}}ErrNilPtr + } + *x, err = Parse{{.enum.Name}}(*v) + default: + return errors.New("invalid type for {{.enum.Name}}") + } + + return +} + +{{ if or .sql .sqlnullstr }} +// Value implements the driver Valuer interface. +func (x {{.enum.Name}}) Value() (driver.Value, error) { + return x.String(), nil +} +{{ else }} +// Value implements the driver Valuer interface. +func (x {{.enum.Name}}) Value() (driver.Value, error) { + return string(x), nil +} +{{end}} + +{{end}} + + +{{ if .flag }} +// Set implements the Golang flag.Value interface func. +func (x *{{.enum.Name}}) Set(val string) error { + v, err := Parse{{.enum.Name}}(val) + *x = v + return err +} + +// Get implements the Golang flag.Getter interface func. +func (x *{{.enum.Name}}) Get() interface{} { + return *x +} + +// Type implements the github.com/spf13/pFlag Value interface. +func (x *{{.enum.Name}}) Type() string { + return "{{.enum.Name}}" +} +{{end}} + +{{ if or .sqlnullint .sqlnullstr }} +type Null{{.enum.Name}} struct{ + {{.enum.Name}} {{.enum.Name}} + Valid bool{{/* Add some info as to whether this value was set during unmarshalling or not */}}{{if .marshal }} + Set bool{{ end }} +} + +func NewNull{{.enum.Name}}(val interface{}) (x Null{{.enum.Name}}) { + err := x.Scan(val) // yes, we ignore this error, it will just be an invalid value. + _ = err // make any errcheck linters happy + return +} + +// Scan implements the Scanner interface. +func (x *Null{{.enum.Name}}) Scan(value interface{}) (err error) { + if value == nil { + x.{{.enum.Name}}, x.Valid = {{.enum.Name}}(""), false + return + } + + err = x.{{.enum.Name}}.Scan(value) + x.Valid = (err == nil) + return +} + +{{ if .sqlnullint }} +// Value implements the driver Valuer interface. +func (x Null{{.enum.Name}}) Value() (driver.Value, error) { + if !x.Valid{ + return nil, nil + } + // driver.Value accepts int64 for int values. + return string(x.{{.enum.Name}}), nil +} +{{ else }} +// Value implements the driver Valuer interface. +func (x Null{{.enum.Name}}) Value() (driver.Value, error) { + if !x.Valid{ + return nil, nil + } + return x.{{.enum.Name}}.String(), nil +} +{{ end }} + +{{ if .marshal }} +// MarshalJSON correctly serializes a Null{{.enum.Name}} to JSON. +func (n Null{{.enum.Name}}) MarshalJSON() ([]byte, error) { + const nullStr = "null" + if n.Valid { + return json.Marshal(n.{{.enum.Name}}) + } + return []byte(nullStr), nil +} + +// UnmarshalJSON correctly deserializes a Null{{.enum.Name}} from JSON. +func (n *Null{{.enum.Name}}) UnmarshalJSON(b []byte) error { + n.Set = true + var x interface{} + err := json.Unmarshal(b, &x) + if err != nil{ + return err + } + err = n.Scan(x) + return err +} +{{ end }} + +{{ end }} + +{{ if and .sqlnullint .sqlnullstr }} +type Null{{.enum.Name}}Str struct { + Null{{.enum.Name}} +} + +func NewNull{{.enum.Name}}Str(val interface{}) (x Null{{.enum.Name}}Str) { + x.Scan(val) // yes, we ignore this error, it will just be an invalid value. + return +} + +// Value implements the driver Valuer interface. +func (x Null{{.enum.Name}}Str) Value() (driver.Value, error) { + if !x.Valid{ + return nil, nil + } + return x.{{.enum.Name}}.String(), nil +} +{{ if .marshal }} +// MarshalJSON correctly serializes a Null{{.enum.Name}} to JSON. +func (n Null{{.enum.Name}}Str) MarshalJSON() ([]byte, error) { + const nullStr = "null" + if n.Valid { + return json.Marshal(n.{{.enum.Name}}) + } + return []byte(nullStr), nil +} + +// UnmarshalJSON correctly deserializes a Null{{.enum.Name}} from JSON. +func (n *Null{{.enum.Name}}Str) UnmarshalJSON(b []byte) error { + n.Set = true + var x interface{} + err := json.Unmarshal(b, &x) + if err != nil{ + return err + } + err = n.Scan(x) + return err +} +{{ end }} +{{ end }} + +{{end}} diff --git a/generator/example_test.go b/generator/example_test.go index 4f094736..4248a31f 100644 --- a/generator/example_test.go +++ b/generator/example_test.go @@ -130,3 +130,11 @@ type Enum64bit uint64 // էժան = 1 // ) type NonASCII int + +// StringEnum. +// ENUM( +// random = 1114 +// values = 300 +// here = 1 +// ) +type StringEnum string diff --git a/generator/generator.go b/generator/generator.go index 111e8e0f..5b377b00 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -287,7 +287,12 @@ func (g *Generator) Generate(f *ast.File) ([]byte, error) { "forcelower": g.forceLower, } - err = g.t.ExecuteTemplate(vBuff, "enum", data) + templateName := "enum" + if enum.Type == "string" { + templateName = "enum_string" + } + + err = g.t.ExecuteTemplate(vBuff, templateName, data) if err != nil { return vBuff.Bytes(), errors.WithMessage(err, fmt.Sprintf("Failed writing enum data for enum: %q", name)) } diff --git a/generator/generator_1.18_test.go b/generator/generator_1.18_test.go index f061b0ee..9292b95f 100644 --- a/generator/generator_1.18_test.go +++ b/generator/generator_1.18_test.go @@ -261,7 +261,7 @@ func Test118EnumParseFailure(t *testing.T) { } // TestUintInvalidParsing -func TestUintInvalidParsing(t *testing.T) { +func Test118UintInvalidParsing(t *testing.T) { input := `package test // ENUM( // a=-1, diff --git a/generator/generator_test.go b/generator/generator_test.go index b2c605f2..f553c5a4 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -1,6 +1,3 @@ -//go:build !go1.18 -// +build !go1.18 - package generator import ( @@ -200,9 +197,7 @@ func TestAliasParsing(t *testing.T) { for name, tc := range tests { t.Run(name, func(t *testing.T) { - defer func() { - replacementNames = map[string]string{} - }() + replacementNames = map[string]string{} err := ParseAliases(tc.input) if tc.err != nil { require.Error(t, err) diff --git a/generator/template_funcs.go b/generator/template_funcs.go index dfec2238..493862c2 100644 --- a/generator/template_funcs.go +++ b/generator/template_funcs.go @@ -38,6 +38,9 @@ func Mapify(e Enum) (ret string, err error) { // Unmapify returns a map that is all of the indexes for a string value lookup func Unmapify(e Enum, lowercase bool) (ret string, err error) { + if e.Type == "string" { + return UnmapifyStringEnum(e, lowercase) + } strName := fmt.Sprintf(`_%sName`, e.Name) ret = fmt.Sprintf("map[string]%s{\n", e.Name) index := 0 @@ -55,8 +58,37 @@ func Unmapify(e Enum, lowercase bool) (ret string, err error) { return } +// Unmapify returns a map that is all of the indexes for a string value lookup +func UnmapifyStringEnum(e Enum, lowercase bool) (ret string, err error) { + var builder strings.Builder + _, err = builder.WriteString("map[string]" + e.Name + "{\n") + if err != nil { + return + } + for _, val := range e.Values { + if val.Name != skipHolder { + _, err = builder.WriteString(fmt.Sprintf("%q:%s,\n", val.RawName, val.PrefixedName)) + if err != nil { + return + } + if lowercase && strings.ToLower(val.RawName) != val.RawName { + _, err = builder.WriteString(fmt.Sprintf("%q:%s,\n", strings.ToLower(val.RawName), val.PrefixedName)) + if err != nil { + return + } + } + } + } + builder.WriteByte('}') + ret = builder.String() + return +} + // Namify returns a slice that is all of the possible names for an enum in a slice func Namify(e Enum) (ret string, err error) { + if e.Type == "string" { + return namifyStringEnum(e) + } strName := fmt.Sprintf(`_%sName`, e.Name) ret = "[]string{\n" index := 0 @@ -71,6 +103,18 @@ func Namify(e Enum) (ret string, err error) { return } +// Namify returns a slice that is all of the possible names for an enum in a slice +func namifyStringEnum(e Enum) (ret string, err error) { + ret = "[]string{\n" + for _, val := range e.Values { + if val.Name != skipHolder { + ret = fmt.Sprintf("%sstring(%s),\n", ret, val.PrefixedName) + } + } + ret = ret + "}" + return +} + func Offset(index int, enumType string, val EnumValue) (strResult string) { if strings.HasPrefix(enumType, "u") { // Unsigned diff --git a/go.mod b/go.mod index dda206db..bb65faeb 100644 --- a/go.mod +++ b/go.mod @@ -30,6 +30,7 @@ require ( github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/spf13/pflag v1.0.5 github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect diff --git a/go.sum b/go.sum index 018eb065..da3148fa 100644 --- a/go.sum +++ b/go.sum @@ -52,6 +52,8 @@ github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBO github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= From 8bf8c2d493190a31502458e11b44c1e6b047c35c Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Sat, 24 Sep 2022 09:33:05 -0700 Subject: [PATCH 40/91] Fix prefix problem (#134) * update dependencies * Examples with prefix replacement. * remove go 1.16 from github actions --- .github/workflows/build_and_test.yml | 8 +- .github/workflows/release.yml | 2 +- Makefile | 27 +- _example/replace_prefix.go | 10 + _example/replace_prefix_enum.go | 74 + _example/replace_prefix_int.go | 10 + _example/replace_prefix_int_enum.go | 80 ++ doc.go | 20 +- .../.snapshots/TestReplacePrefixExampleFile | 1271 +++++++++++++++++ generator/assets/assets.go | 297 ---- generator/embedded.go | 17 - generator/example_test.go | 56 +- generator/generator_test.go | 21 + go.mod | 6 +- go.sum | 19 +- main.go | 2 +- tools.go | 1 - 17 files changed, 1537 insertions(+), 384 deletions(-) create mode 100644 _example/replace_prefix.go create mode 100644 _example/replace_prefix_enum.go create mode 100644 _example/replace_prefix_int.go create mode 100644 _example/replace_prefix_int_enum.go create mode 100644 generator/.snapshots/TestReplacePrefixExampleFile delete mode 100644 generator/assets/assets.go delete mode 100644 generator/embedded.go diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 0860fc44..0ab29a39 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -15,11 +15,12 @@ jobs: go: # Drop support of go 1.12 # Drop support of go 1.13 - - "1.14" - - "1.15" - - "1.16" + # Drop support of go 1.14 + # Drop support of go 1.15 + # Drop support of go 1.16 - "1.17" - "1.18" + - "1.19" name: run tests with go version ${{ matrix.go }} steps: - name: install go @@ -48,4 +49,5 @@ jobs: path: coverage.* - name: Assert no changes + if: ${{ matrix.go }} > '1.16' run: make assert-no-changes diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 942fde64..c43adbd0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,7 +17,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v2 with: - go-version: 1.18 + go-version: 1.19 - name: Cache Go modules uses: actions/cache@v1 diff --git a/Makefile b/Makefile index 930fd57d..de46c50c 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ else .SILENT: endif -GO ?= GO111MODULE=on go +GO ?= go COVERAGEDIR= coverage SERVICE=local @@ -29,18 +29,16 @@ define goinstall GOBIN=$(shell pwd)/bin go install $(1) endef -GOBINDATA=bin/go-bindata GOIMPORTS=bin/goimports GOVERALLS=bin/goveralls MOCKGEN=bin/mockgen deps: $(MOCKGEN) -deps: $(GOBINDATA) deps: $(GOIMPORTS) PACKAGES='./generator' './_example' .PHONY: all -all: build fmt test example cover install assets +all: build fmt test example cover install build: deps $(GO) generate ./generator @@ -100,12 +98,6 @@ bin/mockgen: go.sum bin/goveralls: go.sum $(call goinstall,github.com/mattn/goveralls) -bin/go-bindata: go.sum - $(call goinstall,github.com/kevinburke/go-bindata/go-bindata) - -assets: generator/enum.tmpl generator/enum_string.tmpl - docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:1.15 -c 'make clean $(GOBINDATA) && $(GO) generate ./generator && make clean' - snapshots: snapshots_1.17 snapshots: snapshots_1.18 @@ -114,12 +106,19 @@ snapshots_%: docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:$* -c './update-snapshots.sh || true' .PHONY: ci -ci: docker_1.14 -ci: docker_1.15 -ci: docker_1.16 +# ci: docker_1.16 ci: docker_1.17 ci: docker_1.18 +ci: docker_1.19 docker_%: echo "##### testing golang $* #####" - docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:$* -c 'make clean && make' \ No newline at end of file + docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:$* -c 'make clean && make' + +.PHONY: pullimages +pullimages: pullimage_1.17 +pullimages: pullimage_1.18 +pullimages: pullimage_1.19 + +pullimage_%: + docker pull golang:$* diff --git a/_example/replace_prefix.go b/_example/replace_prefix.go new file mode 100644 index 00000000..31b1ff9c --- /dev/null +++ b/_example/replace_prefix.go @@ -0,0 +1,10 @@ +//go:generate ../bin/go-enum -f=$GOFILE --marshal --prefix=AcmeInc_ --noprefix --nocamel --names + +package example + +// Shops ENUM( +// SOME_PLACE_AWESOME, +// SomewhereElse, +// LocationUnknown +// ) +type Shop string diff --git a/_example/replace_prefix_enum.go b/_example/replace_prefix_enum.go new file mode 100644 index 00000000..b5aac436 --- /dev/null +++ b/_example/replace_prefix_enum.go @@ -0,0 +1,74 @@ +// Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example + +package example + +import ( + "fmt" + "strings" +) + +const ( + // AcmeInc_SOME_PLACE_AWESOME is a Shop of type SOME_PLACE_AWESOME. + AcmeInc_SOME_PLACE_AWESOME Shop = "SOME_PLACE_AWESOME" + // AcmeInc_SomewhereElse is a Shop of type SomewhereElse. + AcmeInc_SomewhereElse Shop = "SomewhereElse" + // AcmeInc_LocationUnknown is a Shop of type LocationUnknown. + AcmeInc_LocationUnknown Shop = "LocationUnknown" +) + +var _ShopNames = []string{ + string(AcmeInc_SOME_PLACE_AWESOME), + string(AcmeInc_SomewhereElse), + string(AcmeInc_LocationUnknown), +} + +// ShopNames returns a list of possible string values of Shop. +func ShopNames() []string { + tmp := make([]string, len(_ShopNames)) + copy(tmp, _ShopNames) + return tmp +} + +// String implements the Stringer interface. +func (x Shop) String() string { + return string(x) +} + +// String implements the Stringer interface. +func (x Shop) IsValid() bool { + _, err := ParseShop(string(x)) + return err == nil +} + +var _ShopValue = map[string]Shop{ + "SOME_PLACE_AWESOME": AcmeInc_SOME_PLACE_AWESOME, + "SomewhereElse": AcmeInc_SomewhereElse, + "LocationUnknown": AcmeInc_LocationUnknown, +} + +// ParseShop attempts to convert a string to a Shop. +func ParseShop(name string) (Shop, error) { + if x, ok := _ShopValue[name]; ok { + return x, nil + } + return Shop(""), fmt.Errorf("%s is not a valid Shop, try [%s]", name, strings.Join(_ShopNames, ", ")) +} + +// MarshalText implements the text marshaller method. +func (x Shop) MarshalText() ([]byte, error) { + return []byte(string(x)), nil +} + +// UnmarshalText implements the text unmarshaller method. +func (x *Shop) UnmarshalText(text []byte) error { + tmp, err := ParseShop(string(text)) + if err != nil { + return err + } + *x = tmp + return nil +} diff --git a/_example/replace_prefix_int.go b/_example/replace_prefix_int.go new file mode 100644 index 00000000..f39769db --- /dev/null +++ b/_example/replace_prefix_int.go @@ -0,0 +1,10 @@ +//go:generate ../bin/go-enum -f=$GOFILE --marshal --prefix=AcmeInt_ --noprefix --nocamel --names + +package example + +// Shops ENUM( +// SOME_PLACE_AWESOME, +// SomewhereElse, +// LocationUnknown +// ) +type IntShop int diff --git a/_example/replace_prefix_int_enum.go b/_example/replace_prefix_int_enum.go new file mode 100644 index 00000000..91b875ca --- /dev/null +++ b/_example/replace_prefix_int_enum.go @@ -0,0 +1,80 @@ +// Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example + +package example + +import ( + "fmt" + "strings" +) + +const ( + // AcmeInt_SOME_PLACE_AWESOME is a IntShop of type SOME_PLACE_AWESOME. + AcmeInt_SOME_PLACE_AWESOME IntShop = iota + // AcmeInt_SomewhereElse is a IntShop of type SomewhereElse. + AcmeInt_SomewhereElse + // AcmeInt_LocationUnknown is a IntShop of type LocationUnknown. + AcmeInt_LocationUnknown +) + +const _IntShopName = "SOME_PLACE_AWESOMESomewhereElseLocationUnknown" + +var _IntShopNames = []string{ + _IntShopName[0:18], + _IntShopName[18:31], + _IntShopName[31:46], +} + +// IntShopNames returns a list of possible string values of IntShop. +func IntShopNames() []string { + tmp := make([]string, len(_IntShopNames)) + copy(tmp, _IntShopNames) + return tmp +} + +var _IntShopMap = map[IntShop]string{ + AcmeInt_SOME_PLACE_AWESOME: _IntShopName[0:18], + AcmeInt_SomewhereElse: _IntShopName[18:31], + AcmeInt_LocationUnknown: _IntShopName[31:46], +} + +// String implements the Stringer interface. +func (x IntShop) String() string { + if str, ok := _IntShopMap[x]; ok { + return str + } + return fmt.Sprintf("IntShop(%d)", x) +} + +var _IntShopValue = map[string]IntShop{ + _IntShopName[0:18]: AcmeInt_SOME_PLACE_AWESOME, + _IntShopName[18:31]: AcmeInt_SomewhereElse, + _IntShopName[31:46]: AcmeInt_LocationUnknown, +} + +// ParseIntShop attempts to convert a string to a IntShop. +func ParseIntShop(name string) (IntShop, error) { + if x, ok := _IntShopValue[name]; ok { + return x, nil + } + return IntShop(0), fmt.Errorf("%s is not a valid IntShop, try [%s]", name, strings.Join(_IntShopNames, ", ")) +} + +// MarshalText implements the text marshaller method. +func (x IntShop) MarshalText() ([]byte, error) { + return []byte(x.String()), nil +} + +// UnmarshalText implements the text unmarshaller method. +func (x *IntShop) UnmarshalText(text []byte) error { + name := string(text) + tmp, err := ParseIntShop(name) + if err != nil { + return err + } + *x = tmp + return nil +} diff --git a/doc.go b/doc.go index 14e96afe..5f36389e 100644 --- a/doc.go +++ b/doc.go @@ -9,21 +9,23 @@ // to skip a value in the enum that won't be an allowed value. // // Installation -// go get github.com/abice/go-enum +// +// go get github.com/abice/go-enum // // Usage: // Sample File -// //go:generate go-enum -f=myenum.go --marshal -- // -// package mypackage +// //go:generate go-enum -f=myenum.go --marshal -- +// +// package mypackage // -// // MyEnum docs here -// // ENUM(Value1, Value2 -// // Value3,_, -// // Value4) -// type MyEnum int +// // MyEnum docs here +// // ENUM(Value1, Value2 +// // Value3,_, +// // Value4) +// type MyEnum int // // Command to generate your enum -// go generate ./ // +// go generate ./ package main diff --git a/generator/.snapshots/TestReplacePrefixExampleFile b/generator/.snapshots/TestReplacePrefixExampleFile new file mode 100644 index 00000000..211d26ca --- /dev/null +++ b/generator/.snapshots/TestReplacePrefixExampleFile @@ -0,0 +1,1271 @@ +([]string) (len=1269) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", + (string) "", + (string) (len=17) "package generator", + (string) "", + (string) (len=8) "import (", + (string) (len=6) "\t\"fmt\"", + (string) (len=10) "\t\"strings\"", + (string) (len=1) ")", + (string) "", + (string) (len=7) "const (", + (string) (len=41) "\t// MyPrefix_Cat is a Animal of type Cat.", + (string) (len=27) "\tMyPrefix_Cat Animal = iota", + (string) (len=41) "\t// MyPrefix_Dog is a Animal of type Dog.", + (string) (len=13) "\tMyPrefix_Dog", + (string) (len=43) "\t// MyPrefix_Fish is a Animal of type Fish.", + (string) (len=14) "\tMyPrefix_Fish", + (string) (len=1) ")", + (string) "", + (string) (len=32) "const _AnimalName = \"CatDogFish\"", + (string) "", + (string) (len=35) "var _AnimalMap = map[Animal]string{", + (string) (len=33) "\tMyPrefix_Cat: _AnimalName[0:3],", + (string) (len=33) "\tMyPrefix_Dog: _AnimalName[3:6],", + (string) (len=34) "\tMyPrefix_Fish: _AnimalName[6:10],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=33) "func (x Animal) String() string {", + (string) (len=34) "\tif str, ok := _AnimalMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=37) "var _AnimalValue = map[string]Animal{", + (string) (len=50) "\t_AnimalName[0:3]: MyPrefix_Cat,", + (string) (len=50) "\tstrings.ToLower(_AnimalName[0:3]): MyPrefix_Cat,", + (string) (len=50) "\t_AnimalName[3:6]: MyPrefix_Dog,", + (string) (len=50) "\tstrings.ToLower(_AnimalName[3:6]): MyPrefix_Dog,", + (string) (len=51) "\t_AnimalName[6:10]: MyPrefix_Fish,", + (string) (len=51) "\tstrings.ToLower(_AnimalName[6:10]): MyPrefix_Fish,", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// ParseAnimal attempts to convert a string to a Animal.", + (string) (len=47) "func ParseAnimal(name string) (Animal, error) {", + (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=63) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=47) "func (x Animal) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=51) "func (x *Animal) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=30) "\ttmp, err := ParseAnimal(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=40) "func (x *Animal) Set(val string) error {", + (string) (len=27) "\tv, err := ParseAnimal(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=36) "func (x *Animal) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=32) "func (x *Animal) Type() string {", + (string) (len=16) "\treturn \"Animal\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=54) "\t// MyPrefix_Test_lower is a Cases of type Test_lower.", + (string) (len=33) "\tMyPrefix_Test_lower Cases = iota", + (string) (len=58) "\t// MyPrefix_Test_capital is a Cases of type Test_capital.", + (string) (len=22) "\tMyPrefix_Test_capital", + (string) (len=76) "\t// MyPrefix_AnotherLowerCaseStart is a Cases of type AnotherLowerCaseStart.", + (string) (len=31) "\tMyPrefix_AnotherLowerCaseStart", + (string) (len=1) ")", + (string) "", + (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", + (string) "", + (string) (len=33) "var _CasesMap = map[Cases]string{", + (string) (len=50) "\tMyPrefix_Test_lower: _CasesName[0:10],", + (string) (len=51) "\tMyPrefix_Test_capital: _CasesName[10:22],", + (string) (len=51) "\tMyPrefix_AnotherLowerCaseStart: _CasesName[22:43],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Cases) String() string {", + (string) (len=33) "\tif str, ok := _CasesMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _CasesValue = map[string]Cases{", + (string) (len=57) "\t_CasesName[0:10]: MyPrefix_Test_lower,", + (string) (len=57) "\tstrings.ToLower(_CasesName[0:10]): MyPrefix_Test_lower,", + (string) (len=59) "\t_CasesName[10:22]: MyPrefix_Test_capital,", + (string) (len=59) "\tstrings.ToLower(_CasesName[10:22]): MyPrefix_Test_capital,", + (string) (len=68) "\t_CasesName[22:43]: MyPrefix_AnotherLowerCaseStart,", + (string) (len=68) "\tstrings.ToLower(_CasesName[22:43]): MyPrefix_AnotherLowerCaseStart,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseCases attempts to convert a string to a Cases.", + (string) (len=45) "func ParseCases(name string) (Cases, error) {", + (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=61) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Cases) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Cases) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseCases(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=39) "func (x *Cases) Set(val string) error {", + (string) (len=26) "\tv, err := ParseCases(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=35) "func (x *Cases) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=31) "func (x *Cases) Type() string {", + (string) (len=15) "\treturn \"Cases\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=44) "\t// MyPrefix_Black is a Color of type Black.", + (string) (len=28) "\tMyPrefix_Black Color = iota", + (string) (len=44) "\t// MyPrefix_White is a Color of type White.", + (string) (len=15) "\tMyPrefix_White", + (string) (len=40) "\t// MyPrefix_Red is a Color of type Red.", + (string) (len=13) "\tMyPrefix_Red", + (string) (len=44) "\t// MyPrefix_Green is a Color of type Green.", + (string) (len=15) "\tMyPrefix_Green", + (string) (len=42) "\t// MyPrefix_Blue is a Color of type Blue.", + (string) (len=32) "\tMyPrefix_Blue Color = iota + 29", + (string) (len=42) "\t// MyPrefix_Grey is a Color of type Grey.", + (string) (len=14) "\tMyPrefix_Grey", + (string) (len=46) "\t// MyPrefix_Yellow is a Color of type Yellow.", + (string) (len=16) "\tMyPrefix_Yellow", + (string) (len=1) ")", + (string) "", + (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", + (string) "", + (string) (len=33) "var _ColorMap = map[Color]string{", + (string) (len=34) "\tMyPrefix_Black: _ColorName[0:5],", + (string) (len=35) "\tMyPrefix_White: _ColorName[5:10],", + (string) (len=36) "\tMyPrefix_Red: _ColorName[10:13],", + (string) (len=36) "\tMyPrefix_Green: _ColorName[13:18],", + (string) (len=36) "\tMyPrefix_Blue: _ColorName[18:22],", + (string) (len=36) "\tMyPrefix_Grey: _ColorName[22:26],", + (string) (len=36) "\tMyPrefix_Yellow: _ColorName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Color) String() string {", + (string) (len=33) "\tif str, ok := _ColorMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _ColorValue = map[string]Color{", + (string) (len=52) "\t_ColorName[0:5]: MyPrefix_Black,", + (string) (len=52) "\tstrings.ToLower(_ColorName[0:5]): MyPrefix_Black,", + (string) (len=52) "\t_ColorName[5:10]: MyPrefix_White,", + (string) (len=52) "\tstrings.ToLower(_ColorName[5:10]): MyPrefix_White,", + (string) (len=50) "\t_ColorName[10:13]: MyPrefix_Red,", + (string) (len=50) "\tstrings.ToLower(_ColorName[10:13]): MyPrefix_Red,", + (string) (len=52) "\t_ColorName[13:18]: MyPrefix_Green,", + (string) (len=52) "\tstrings.ToLower(_ColorName[13:18]): MyPrefix_Green,", + (string) (len=51) "\t_ColorName[18:22]: MyPrefix_Blue,", + (string) (len=51) "\tstrings.ToLower(_ColorName[18:22]): MyPrefix_Blue,", + (string) (len=51) "\t_ColorName[22:26]: MyPrefix_Grey,", + (string) (len=51) "\tstrings.ToLower(_ColorName[22:26]): MyPrefix_Grey,", + (string) (len=53) "\t_ColorName[26:32]: MyPrefix_Yellow,", + (string) (len=53) "\tstrings.ToLower(_ColorName[26:32]): MyPrefix_Yellow,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseColor attempts to convert a string to a Color.", + (string) (len=45) "func ParseColor(name string) (Color, error) {", + (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=61) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Color) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Color) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseColor(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=39) "func (x *Color) Set(val string) error {", + (string) (len=26) "\tv, err := ParseColor(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=35) "func (x *Color) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=31) "func (x *Color) Type() string {", + (string) (len=15) "\treturn \"Color\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=55) "\t// MyPrefix_Black is a ColorWithComment of type Black.", + (string) (len=39) "\tMyPrefix_Black ColorWithComment = iota", + (string) (len=55) "\t// MyPrefix_White is a ColorWithComment of type White.", + (string) (len=15) "\tMyPrefix_White", + (string) (len=51) "\t// MyPrefix_Red is a ColorWithComment of type Red.", + (string) (len=13) "\tMyPrefix_Red", + (string) (len=55) "\t// MyPrefix_Green is a ColorWithComment of type Green.", + (string) (len=15) "\tMyPrefix_Green", + (string) (len=53) "\t// MyPrefix_Blue is a ColorWithComment of type Blue.", + (string) (len=24) "\t// Blue starts with 33.", + (string) (len=43) "\tMyPrefix_Blue ColorWithComment = iota + 29", + (string) (len=53) "\t// MyPrefix_Grey is a ColorWithComment of type Grey.", + (string) (len=14) "\tMyPrefix_Grey", + (string) (len=57) "\t// MyPrefix_Yellow is a ColorWithComment of type Yellow.", + (string) (len=16) "\tMyPrefix_Yellow", + (string) (len=1) ")", + (string) "", + (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", + (string) "", + (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", + (string) (len=45) "\tMyPrefix_Black: _ColorWithCommentName[0:5],", + (string) (len=46) "\tMyPrefix_White: _ColorWithCommentName[5:10],", + (string) (len=47) "\tMyPrefix_Red: _ColorWithCommentName[10:13],", + (string) (len=47) "\tMyPrefix_Green: _ColorWithCommentName[13:18],", + (string) (len=47) "\tMyPrefix_Blue: _ColorWithCommentName[18:22],", + (string) (len=47) "\tMyPrefix_Grey: _ColorWithCommentName[22:26],", + (string) (len=47) "\tMyPrefix_Yellow: _ColorWithCommentName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=43) "func (x ColorWithComment) String() string {", + (string) (len=44) "\tif str, ok := _ColorWithCommentMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", + (string) (len=63) "\t_ColorWithCommentName[0:5]: MyPrefix_Black,", + (string) (len=63) "\tstrings.ToLower(_ColorWithCommentName[0:5]): MyPrefix_Black,", + (string) (len=63) "\t_ColorWithCommentName[5:10]: MyPrefix_White,", + (string) (len=63) "\tstrings.ToLower(_ColorWithCommentName[5:10]): MyPrefix_White,", + (string) (len=61) "\t_ColorWithCommentName[10:13]: MyPrefix_Red,", + (string) (len=61) "\tstrings.ToLower(_ColorWithCommentName[10:13]): MyPrefix_Red,", + (string) (len=63) "\t_ColorWithCommentName[13:18]: MyPrefix_Green,", + (string) (len=63) "\tstrings.ToLower(_ColorWithCommentName[13:18]): MyPrefix_Green,", + (string) (len=62) "\t_ColorWithCommentName[18:22]: MyPrefix_Blue,", + (string) (len=62) "\tstrings.ToLower(_ColorWithCommentName[18:22]): MyPrefix_Blue,", + (string) (len=62) "\t_ColorWithCommentName[22:26]: MyPrefix_Grey,", + (string) (len=62) "\tstrings.ToLower(_ColorWithCommentName[22:26]): MyPrefix_Grey,", + (string) (len=64) "\t_ColorWithCommentName[26:32]: MyPrefix_Yellow,", + (string) (len=64) "\tstrings.ToLower(_ColorWithCommentName[26:32]): MyPrefix_Yellow,", + (string) (len=1) "}", + (string) "", + (string) (len=76) "// ParseColorWithComment attempts to convert a string to a ColorWithComment.", + (string) (len=67) "func ParseColorWithComment(name string) (ColorWithComment, error) {", + (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=83) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=57) "func (x ColorWithComment) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=61) "func (x *ColorWithComment) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=40) "\ttmp, err := ParseColorWithComment(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=50) "func (x *ColorWithComment) Set(val string) error {", + (string) (len=37) "\tv, err := ParseColorWithComment(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=46) "func (x *ColorWithComment) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=42) "func (x *ColorWithComment) Type() string {", + (string) (len=26) "\treturn \"ColorWithComment\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=56) "\t// MyPrefix_Black is a ColorWithComment2 of type Black.", + (string) (len=40) "\tMyPrefix_Black ColorWithComment2 = iota", + (string) (len=56) "\t// MyPrefix_White is a ColorWithComment2 of type White.", + (string) (len=15) "\tMyPrefix_White", + (string) (len=52) "\t// MyPrefix_Red is a ColorWithComment2 of type Red.", + (string) (len=13) "\tMyPrefix_Red", + (string) (len=56) "\t// MyPrefix_Green is a ColorWithComment2 of type Green.", + (string) (len=15) "\tMyPrefix_Green", + (string) (len=54) "\t// MyPrefix_Blue is a ColorWithComment2 of type Blue.", + (string) (len=23) "\t// Blue starts with 33", + (string) (len=44) "\tMyPrefix_Blue ColorWithComment2 = iota + 29", + (string) (len=54) "\t// MyPrefix_Grey is a ColorWithComment2 of type Grey.", + (string) (len=14) "\tMyPrefix_Grey", + (string) (len=58) "\t// MyPrefix_Yellow is a ColorWithComment2 of type Yellow.", + (string) (len=16) "\tMyPrefix_Yellow", + (string) (len=1) ")", + (string) "", + (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", + (string) "", + (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", + (string) (len=46) "\tMyPrefix_Black: _ColorWithComment2Name[0:5],", + (string) (len=47) "\tMyPrefix_White: _ColorWithComment2Name[5:10],", + (string) (len=48) "\tMyPrefix_Red: _ColorWithComment2Name[10:13],", + (string) (len=48) "\tMyPrefix_Green: _ColorWithComment2Name[13:18],", + (string) (len=48) "\tMyPrefix_Blue: _ColorWithComment2Name[18:22],", + (string) (len=48) "\tMyPrefix_Grey: _ColorWithComment2Name[22:26],", + (string) (len=48) "\tMyPrefix_Yellow: _ColorWithComment2Name[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment2) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment2Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", + (string) (len=64) "\t_ColorWithComment2Name[0:5]: MyPrefix_Black,", + (string) (len=64) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): MyPrefix_Black,", + (string) (len=64) "\t_ColorWithComment2Name[5:10]: MyPrefix_White,", + (string) (len=64) "\tstrings.ToLower(_ColorWithComment2Name[5:10]): MyPrefix_White,", + (string) (len=62) "\t_ColorWithComment2Name[10:13]: MyPrefix_Red,", + (string) (len=62) "\tstrings.ToLower(_ColorWithComment2Name[10:13]): MyPrefix_Red,", + (string) (len=64) "\t_ColorWithComment2Name[13:18]: MyPrefix_Green,", + (string) (len=64) "\tstrings.ToLower(_ColorWithComment2Name[13:18]): MyPrefix_Green,", + (string) (len=63) "\t_ColorWithComment2Name[18:22]: MyPrefix_Blue,", + (string) (len=63) "\tstrings.ToLower(_ColorWithComment2Name[18:22]): MyPrefix_Blue,", + (string) (len=63) "\t_ColorWithComment2Name[22:26]: MyPrefix_Grey,", + (string) (len=63) "\tstrings.ToLower(_ColorWithComment2Name[22:26]): MyPrefix_Grey,", + (string) (len=65) "\t_ColorWithComment2Name[26:32]: MyPrefix_Yellow,", + (string) (len=65) "\tstrings.ToLower(_ColorWithComment2Name[26:32]): MyPrefix_Yellow,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2.", + (string) (len=69) "func ParseColorWithComment2(name string) (ColorWithComment2, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=85) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment2) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment2) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment2(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=51) "func (x *ColorWithComment2) Set(val string) error {", + (string) (len=38) "\tv, err := ParseColorWithComment2(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=47) "func (x *ColorWithComment2) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=43) "func (x *ColorWithComment2) Type() string {", + (string) (len=27) "\treturn \"ColorWithComment2\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=56) "\t// MyPrefix_Black is a ColorWithComment3 of type Black.", + (string) (len=40) "\tMyPrefix_Black ColorWithComment3 = iota", + (string) (len=56) "\t// MyPrefix_White is a ColorWithComment3 of type White.", + (string) (len=15) "\tMyPrefix_White", + (string) (len=52) "\t// MyPrefix_Red is a ColorWithComment3 of type Red.", + (string) (len=13) "\tMyPrefix_Red", + (string) (len=56) "\t// MyPrefix_Green is a ColorWithComment3 of type Green.", + (string) (len=24) "\t// Green starts with 33", + (string) (len=45) "\tMyPrefix_Green ColorWithComment3 = iota + 30", + (string) (len=54) "\t// MyPrefix_Blue is a ColorWithComment3 of type Blue.", + (string) (len=14) "\tMyPrefix_Blue", + (string) (len=54) "\t// MyPrefix_Grey is a ColorWithComment3 of type Grey.", + (string) (len=14) "\tMyPrefix_Grey", + (string) (len=58) "\t// MyPrefix_Yellow is a ColorWithComment3 of type Yellow.", + (string) (len=16) "\tMyPrefix_Yellow", + (string) (len=65) "\t// MyPrefix_BlueGreen is a ColorWithComment3 of type Blue-Green.", + (string) (len=22) "\t// blue-green comment", + (string) (len=19) "\tMyPrefix_BlueGreen", + (string) (len=65) "\t// MyPrefix_RedOrange is a ColorWithComment3 of type Red-Orange.", + (string) (len=19) "\tMyPrefix_RedOrange", + (string) (len=74) "\t// MyPrefix_RedOrangeBlue is a ColorWithComment3 of type Red-Orange-Blue.", + (string) (len=23) "\tMyPrefix_RedOrangeBlue", + (string) (len=1) ")", + (string) "", + (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", + (string) "", + (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", + (string) (len=53) "\tMyPrefix_Black: _ColorWithComment3Name[0:5],", + (string) (len=54) "\tMyPrefix_White: _ColorWithComment3Name[5:10],", + (string) (len=55) "\tMyPrefix_Red: _ColorWithComment3Name[10:13],", + (string) (len=55) "\tMyPrefix_Green: _ColorWithComment3Name[13:18],", + (string) (len=55) "\tMyPrefix_Blue: _ColorWithComment3Name[18:22],", + (string) (len=55) "\tMyPrefix_Grey: _ColorWithComment3Name[22:26],", + (string) (len=55) "\tMyPrefix_Yellow: _ColorWithComment3Name[26:32],", + (string) (len=55) "\tMyPrefix_BlueGreen: _ColorWithComment3Name[32:42],", + (string) (len=55) "\tMyPrefix_RedOrange: _ColorWithComment3Name[42:52],", + (string) (len=55) "\tMyPrefix_RedOrangeBlue: _ColorWithComment3Name[52:67],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment3) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment3Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", + (string) (len=64) "\t_ColorWithComment3Name[0:5]: MyPrefix_Black,", + (string) (len=64) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): MyPrefix_Black,", + (string) (len=64) "\t_ColorWithComment3Name[5:10]: MyPrefix_White,", + (string) (len=64) "\tstrings.ToLower(_ColorWithComment3Name[5:10]): MyPrefix_White,", + (string) (len=62) "\t_ColorWithComment3Name[10:13]: MyPrefix_Red,", + (string) (len=62) "\tstrings.ToLower(_ColorWithComment3Name[10:13]): MyPrefix_Red,", + (string) (len=64) "\t_ColorWithComment3Name[13:18]: MyPrefix_Green,", + (string) (len=64) "\tstrings.ToLower(_ColorWithComment3Name[13:18]): MyPrefix_Green,", + (string) (len=63) "\t_ColorWithComment3Name[18:22]: MyPrefix_Blue,", + (string) (len=63) "\tstrings.ToLower(_ColorWithComment3Name[18:22]): MyPrefix_Blue,", + (string) (len=63) "\t_ColorWithComment3Name[22:26]: MyPrefix_Grey,", + (string) (len=63) "\tstrings.ToLower(_ColorWithComment3Name[22:26]): MyPrefix_Grey,", + (string) (len=65) "\t_ColorWithComment3Name[26:32]: MyPrefix_Yellow,", + (string) (len=65) "\tstrings.ToLower(_ColorWithComment3Name[26:32]): MyPrefix_Yellow,", + (string) (len=68) "\t_ColorWithComment3Name[32:42]: MyPrefix_BlueGreen,", + (string) (len=68) "\tstrings.ToLower(_ColorWithComment3Name[32:42]): MyPrefix_BlueGreen,", + (string) (len=68) "\t_ColorWithComment3Name[42:52]: MyPrefix_RedOrange,", + (string) (len=68) "\tstrings.ToLower(_ColorWithComment3Name[42:52]): MyPrefix_RedOrange,", + (string) (len=72) "\t_ColorWithComment3Name[52:67]: MyPrefix_RedOrangeBlue,", + (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[52:67]): MyPrefix_RedOrangeBlue,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3.", + (string) (len=69) "func ParseColorWithComment3(name string) (ColorWithComment3, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=85) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment3) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment3) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment3(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=51) "func (x *ColorWithComment3) Set(val string) error {", + (string) (len=38) "\tv, err := ParseColorWithComment3(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=47) "func (x *ColorWithComment3) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=43) "func (x *ColorWithComment3) Type() string {", + (string) (len=27) "\treturn \"ColorWithComment3\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=18) "\t// Skipped value.", + (string) (len=15) "\t// Placeholder", + (string) (len=27) "\t_ ColorWithComment4 = iota", + (string) (len=56) "\t// MyPrefix_Black is a ColorWithComment4 of type Black.", + (string) (len=15) "\tMyPrefix_Black", + (string) (len=56) "\t// MyPrefix_White is a ColorWithComment4 of type White.", + (string) (len=15) "\tMyPrefix_White", + (string) (len=52) "\t// MyPrefix_Red is a ColorWithComment4 of type Red.", + (string) (len=13) "\tMyPrefix_Red", + (string) (len=56) "\t// MyPrefix_Green is a ColorWithComment4 of type Green.", + (string) (len=24) "\t// Green starts with 33", + (string) (len=45) "\tMyPrefix_Green ColorWithComment4 = iota + 29", + (string) (len=54) "\t// MyPrefix_Blue is a ColorWithComment4 of type Blue.", + (string) (len=14) "\tMyPrefix_Blue", + (string) (len=54) "\t// MyPrefix_Grey is a ColorWithComment4 of type Grey.", + (string) (len=14) "\tMyPrefix_Grey", + (string) (len=58) "\t// MyPrefix_Yellow is a ColorWithComment4 of type Yellow.", + (string) (len=110) "\t// Where did all the (somewhat) bad fish go? (something else that goes in parentheses at the end of the line)", + (string) (len=16) "\tMyPrefix_Yellow", + (string) (len=65) "\t// MyPrefix_BlueGreen is a ColorWithComment4 of type Blue-Green.", + (string) (len=22) "\t// blue-green comment", + (string) (len=19) "\tMyPrefix_BlueGreen", + (string) (len=65) "\t// MyPrefix_RedOrange is a ColorWithComment4 of type Red-Orange.", + (string) (len=20) "\t// has a , in it!?!", + (string) (len=19) "\tMyPrefix_RedOrange", + (string) (len=1) ")", + (string) "", + (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", + (string) "", + (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", + (string) (len=49) "\tMyPrefix_Black: _ColorWithComment4Name[0:5],", + (string) (len=50) "\tMyPrefix_White: _ColorWithComment4Name[5:10],", + (string) (len=51) "\tMyPrefix_Red: _ColorWithComment4Name[10:13],", + (string) (len=51) "\tMyPrefix_Green: _ColorWithComment4Name[13:18],", + (string) (len=51) "\tMyPrefix_Blue: _ColorWithComment4Name[18:22],", + (string) (len=51) "\tMyPrefix_Grey: _ColorWithComment4Name[22:26],", + (string) (len=51) "\tMyPrefix_Yellow: _ColorWithComment4Name[26:32],", + (string) (len=51) "\tMyPrefix_BlueGreen: _ColorWithComment4Name[32:42],", + (string) (len=51) "\tMyPrefix_RedOrange: _ColorWithComment4Name[42:52],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment4) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment4Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", + (string) (len=64) "\t_ColorWithComment4Name[0:5]: MyPrefix_Black,", + (string) (len=64) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): MyPrefix_Black,", + (string) (len=64) "\t_ColorWithComment4Name[5:10]: MyPrefix_White,", + (string) (len=64) "\tstrings.ToLower(_ColorWithComment4Name[5:10]): MyPrefix_White,", + (string) (len=62) "\t_ColorWithComment4Name[10:13]: MyPrefix_Red,", + (string) (len=62) "\tstrings.ToLower(_ColorWithComment4Name[10:13]): MyPrefix_Red,", + (string) (len=64) "\t_ColorWithComment4Name[13:18]: MyPrefix_Green,", + (string) (len=64) "\tstrings.ToLower(_ColorWithComment4Name[13:18]): MyPrefix_Green,", + (string) (len=63) "\t_ColorWithComment4Name[18:22]: MyPrefix_Blue,", + (string) (len=63) "\tstrings.ToLower(_ColorWithComment4Name[18:22]): MyPrefix_Blue,", + (string) (len=63) "\t_ColorWithComment4Name[22:26]: MyPrefix_Grey,", + (string) (len=63) "\tstrings.ToLower(_ColorWithComment4Name[22:26]): MyPrefix_Grey,", + (string) (len=65) "\t_ColorWithComment4Name[26:32]: MyPrefix_Yellow,", + (string) (len=65) "\tstrings.ToLower(_ColorWithComment4Name[26:32]): MyPrefix_Yellow,", + (string) (len=68) "\t_ColorWithComment4Name[32:42]: MyPrefix_BlueGreen,", + (string) (len=68) "\tstrings.ToLower(_ColorWithComment4Name[32:42]): MyPrefix_BlueGreen,", + (string) (len=68) "\t_ColorWithComment4Name[42:52]: MyPrefix_RedOrange,", + (string) (len=68) "\tstrings.ToLower(_ColorWithComment4Name[42:52]): MyPrefix_RedOrange,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4.", + (string) (len=69) "func ParseColorWithComment4(name string) (ColorWithComment4, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=85) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment4) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment4) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment4(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=51) "func (x *ColorWithComment4) Set(val string) error {", + (string) (len=38) "\tv, err := ParseColorWithComment4(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=47) "func (x *ColorWithComment4) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=43) "func (x *ColorWithComment4) Type() string {", + (string) (len=27) "\treturn \"ColorWithComment4\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=52) "\t// MyPrefix_Unknown is a Enum64bit of type Unknown.", + (string) (len=34) "\tMyPrefix_Unknown Enum64bit = iota", + (string) (len=48) "\t// MyPrefix_E2P15 is a Enum64bit of type E2P15.", + (string) (len=40) "\tMyPrefix_E2P15 Enum64bit = iota + 32767", + (string) (len=48) "\t// MyPrefix_E2P16 is a Enum64bit of type E2P16.", + (string) (len=40) "\tMyPrefix_E2P16 Enum64bit = iota + 65534", + (string) (len=48) "\t// MyPrefix_E2P17 is a Enum64bit of type E2P17.", + (string) (len=41) "\tMyPrefix_E2P17 Enum64bit = iota + 131069", + (string) (len=48) "\t// MyPrefix_E2P18 is a Enum64bit of type E2P18.", + (string) (len=41) "\tMyPrefix_E2P18 Enum64bit = iota + 262140", + (string) (len=48) "\t// MyPrefix_E2P19 is a Enum64bit of type E2P19.", + (string) (len=41) "\tMyPrefix_E2P19 Enum64bit = iota + 524283", + (string) (len=48) "\t// MyPrefix_E2P20 is a Enum64bit of type E2P20.", + (string) (len=42) "\tMyPrefix_E2P20 Enum64bit = iota + 1048570", + (string) (len=48) "\t// MyPrefix_E2P21 is a Enum64bit of type E2P21.", + (string) (len=42) "\tMyPrefix_E2P21 Enum64bit = iota + 2097145", + (string) (len=48) "\t// MyPrefix_E2P22 is a Enum64bit of type E2P22.", + (string) (len=43) "\tMyPrefix_E2P22 Enum64bit = iota + 33554424", + (string) (len=48) "\t// MyPrefix_E2P23 is a Enum64bit of type E2P23.", + (string) (len=43) "\tMyPrefix_E2P23 Enum64bit = iota + 67108855", + (string) (len=48) "\t// MyPrefix_E2P28 is a Enum64bit of type E2P28.", + (string) (len=44) "\tMyPrefix_E2P28 Enum64bit = iota + 536870902", + (string) (len=48) "\t// MyPrefix_E2P30 is a Enum64bit of type E2P30.", + (string) (len=45) "\tMyPrefix_E2P30 Enum64bit = iota + 1073741813", + (string) (len=48) "\t// MyPrefix_E2P31 is a Enum64bit of type E2P31.", + (string) (len=45) "\tMyPrefix_E2P31 Enum64bit = iota + 2147483636", + (string) (len=48) "\t// MyPrefix_E2P32 is a Enum64bit of type E2P32.", + (string) (len=45) "\tMyPrefix_E2P32 Enum64bit = iota + 4294967283", + (string) (len=48) "\t// MyPrefix_E2P33 is a Enum64bit of type E2P33.", + (string) (len=45) "\tMyPrefix_E2P33 Enum64bit = iota + 8454967282", + (string) (len=1) ")", + (string) "", + (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", + (string) "", + (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", + (string) (len=39) "\tMyPrefix_Unknown: _Enum64bitName[0:7],", + (string) (len=40) "\tMyPrefix_E2P15: _Enum64bitName[7:12],", + (string) (len=41) "\tMyPrefix_E2P16: _Enum64bitName[12:17],", + (string) (len=41) "\tMyPrefix_E2P17: _Enum64bitName[17:22],", + (string) (len=41) "\tMyPrefix_E2P18: _Enum64bitName[22:27],", + (string) (len=41) "\tMyPrefix_E2P19: _Enum64bitName[27:32],", + (string) (len=41) "\tMyPrefix_E2P20: _Enum64bitName[32:37],", + (string) (len=41) "\tMyPrefix_E2P21: _Enum64bitName[37:42],", + (string) (len=41) "\tMyPrefix_E2P22: _Enum64bitName[42:47],", + (string) (len=41) "\tMyPrefix_E2P23: _Enum64bitName[47:52],", + (string) (len=41) "\tMyPrefix_E2P28: _Enum64bitName[52:57],", + (string) (len=41) "\tMyPrefix_E2P30: _Enum64bitName[57:62],", + (string) (len=41) "\tMyPrefix_E2P31: _Enum64bitName[62:67],", + (string) (len=41) "\tMyPrefix_E2P32: _Enum64bitName[67:72],", + (string) (len=41) "\tMyPrefix_E2P33: _Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x Enum64bit) String() string {", + (string) (len=37) "\tif str, ok := _Enum64bitMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", + (string) (len=58) "\t_Enum64bitName[0:7]: MyPrefix_Unknown,", + (string) (len=58) "\tstrings.ToLower(_Enum64bitName[0:7]): MyPrefix_Unknown,", + (string) (len=56) "\t_Enum64bitName[7:12]: MyPrefix_E2P15,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[7:12]): MyPrefix_E2P15,", + (string) (len=56) "\t_Enum64bitName[12:17]: MyPrefix_E2P16,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[12:17]): MyPrefix_E2P16,", + (string) (len=56) "\t_Enum64bitName[17:22]: MyPrefix_E2P17,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[17:22]): MyPrefix_E2P17,", + (string) (len=56) "\t_Enum64bitName[22:27]: MyPrefix_E2P18,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[22:27]): MyPrefix_E2P18,", + (string) (len=56) "\t_Enum64bitName[27:32]: MyPrefix_E2P19,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[27:32]): MyPrefix_E2P19,", + (string) (len=56) "\t_Enum64bitName[32:37]: MyPrefix_E2P20,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[32:37]): MyPrefix_E2P20,", + (string) (len=56) "\t_Enum64bitName[37:42]: MyPrefix_E2P21,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[37:42]): MyPrefix_E2P21,", + (string) (len=56) "\t_Enum64bitName[42:47]: MyPrefix_E2P22,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[42:47]): MyPrefix_E2P22,", + (string) (len=56) "\t_Enum64bitName[47:52]: MyPrefix_E2P23,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[47:52]): MyPrefix_E2P23,", + (string) (len=56) "\t_Enum64bitName[52:57]: MyPrefix_E2P28,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[52:57]): MyPrefix_E2P28,", + (string) (len=56) "\t_Enum64bitName[57:62]: MyPrefix_E2P30,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[57:62]): MyPrefix_E2P30,", + (string) (len=56) "\t_Enum64bitName[62:67]: MyPrefix_E2P31,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[62:67]): MyPrefix_E2P31,", + (string) (len=56) "\t_Enum64bitName[67:72]: MyPrefix_E2P32,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[67:72]): MyPrefix_E2P32,", + (string) (len=56) "\t_Enum64bitName[72:77]: MyPrefix_E2P33,", + (string) (len=56) "\tstrings.ToLower(_Enum64bitName[72:77]): MyPrefix_E2P33,", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// ParseEnum64bit attempts to convert a string to a Enum64bit.", + (string) (len=53) "func ParseEnum64bit(name string) (Enum64bit, error) {", + (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=69) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=50) "func (x Enum64bit) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=54) "func (x *Enum64bit) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=33) "\ttmp, err := ParseEnum64bit(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=43) "func (x *Enum64bit) Set(val string) error {", + (string) (len=30) "\tv, err := ParseEnum64bit(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=39) "func (x *Enum64bit) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=35) "func (x *Enum64bit) Type() string {", + (string) (len=19) "\treturn \"Enum64bit\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=46) "\t// MyPrefix_Toyota is a Model of type Toyota.", + (string) (len=29) "\tMyPrefix_Toyota Model = iota", + (string) (len=18) "\t// Skipped value.", + (string) (len=2) "\t_", + (string) (len=44) "\t// MyPrefix_Chevy is a Model of type Chevy.", + (string) (len=15) "\tMyPrefix_Chevy", + (string) (len=18) "\t// Skipped value.", + (string) (len=2) "\t_", + (string) (len=42) "\t// MyPrefix_Ford is a Model of type Ford.", + (string) (len=14) "\tMyPrefix_Ford", + (string) (len=1) ")", + (string) "", + (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", + (string) "", + (string) (len=33) "var _ModelMap = map[Model]string{", + (string) (len=34) "\tMyPrefix_Toyota: _ModelName[0:6],", + (string) (len=35) "\tMyPrefix_Chevy: _ModelName[6:11],", + (string) (len=36) "\tMyPrefix_Ford: _ModelName[11:15],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Model) String() string {", + (string) (len=33) "\tif str, ok := _ModelMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _ModelValue = map[string]Model{", + (string) (len=53) "\t_ModelName[0:6]: MyPrefix_Toyota,", + (string) (len=53) "\tstrings.ToLower(_ModelName[0:6]): MyPrefix_Toyota,", + (string) (len=52) "\t_ModelName[6:11]: MyPrefix_Chevy,", + (string) (len=52) "\tstrings.ToLower(_ModelName[6:11]): MyPrefix_Chevy,", + (string) (len=51) "\t_ModelName[11:15]: MyPrefix_Ford,", + (string) (len=51) "\tstrings.ToLower(_ModelName[11:15]): MyPrefix_Ford,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseModel attempts to convert a string to a Model.", + (string) (len=45) "func ParseModel(name string) (Model, error) {", + (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=61) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Model) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Model) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseModel(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=39) "func (x *Model) Set(val string) error {", + (string) (len=26) "\tv, err := ParseModel(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=35) "func (x *Model) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=31) "func (x *Model) Type() string {", + (string) (len=15) "\treturn \"Model\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=61) "\t// MyPrefix_Продам is a NonASCII of type Продам.", + (string) (len=45) "\tMyPrefix_Продам NonASCII = iota + 1114", + (string) (len=49) "\t// MyPrefix_車庫 is a NonASCII of type 車庫.", + (string) (len=38) "\tMyPrefix_車庫 NonASCII = iota + 299", + (string) (len=53) "\t// MyPrefix_Էժան is a NonASCII of type Էժան.", + (string) (len=39) "\tMyPrefix_Էժան NonASCII = iota + -1", + (string) (len=1) ")", + (string) "", + (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", + (string) "", + (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", + (string) (len=44) "\tMyPrefix_Продам: _NonASCIIName[0:12],", + (string) (len=43) "\tMyPrefix_車庫: _NonASCIIName[12:18],", + (string) (len=43) "\tMyPrefix_Էժան: _NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=35) "func (x NonASCII) String() string {", + (string) (len=36) "\tif str, ok := _NonASCIIMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", + (string) (len=62) "\t_NonASCIIName[0:12]: MyPrefix_Продам,", + (string) (len=62) "\tstrings.ToLower(_NonASCIIName[0:12]): MyPrefix_Продам,", + (string) (len=56) "\t_NonASCIIName[12:18]: MyPrefix_車庫,", + (string) (len=56) "\tstrings.ToLower(_NonASCIIName[12:18]): MyPrefix_車庫,", + (string) (len=58) "\t_NonASCIIName[18:26]: MyPrefix_Էժան,", + (string) (len=58) "\tstrings.ToLower(_NonASCIIName[18:26]): MyPrefix_Էժան,", + (string) (len=1) "}", + (string) "", + (string) (len=60) "// ParseNonASCII attempts to convert a string to a NonASCII.", + (string) (len=51) "func ParseNonASCII(name string) (NonASCII, error) {", + (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=67) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=49) "func (x NonASCII) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=53) "func (x *NonASCII) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=32) "\ttmp, err := ParseNonASCII(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=42) "func (x *NonASCII) Set(val string) error {", + (string) (len=29) "\tv, err := ParseNonASCII(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=38) "func (x *NonASCII) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=34) "func (x *NonASCII) Type() string {", + (string) (len=18) "\treturn \"NonASCII\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=60) "\t// MyPrefix_TestHyphen is a Sanitizing of type Test-Hyphen.", + (string) (len=38) "\tMyPrefix_TestHyphen Sanitizing = iota", + (string) (len=62) "\t// MyPrefix_HyphenStart is a Sanitizing of type -HyphenStart.", + (string) (len=21) "\tMyPrefix_HyphenStart", + (string) (len=71) "\t// MyPrefix__underscoreFirst is a Sanitizing of type _underscoreFirst.", + (string) (len=26) "\tMyPrefix__underscoreFirst", + (string) (len=63) "\t// MyPrefix_0numberFirst is a Sanitizing of type 0numberFirst.", + (string) (len=22) "\tMyPrefix_0numberFirst", + (string) (len=59) "\t// MyPrefix_123456789a is a Sanitizing of type 123456789a.", + (string) (len=20) "\tMyPrefix_123456789a", + (string) (len=60) "\t// MyPrefix_123123Asdf is a Sanitizing of type 123123-Asdf.", + (string) (len=20) "\tMyPrefix_123123Asdf", + (string) (len=65) "\t// MyPrefix_EndingHyphen is a Sanitizing of type Ending-Hyphen-.", + (string) (len=22) "\tMyPrefix_EndingHyphen", + (string) (len=1) ")", + (string) "", + (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", + (string) "", + (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", + (string) (len=50) "\tMyPrefix_TestHyphen: _SanitizingName[0:11],", + (string) (len=51) "\tMyPrefix_HyphenStart: _SanitizingName[11:23],", + (string) (len=51) "\tMyPrefix__underscoreFirst: _SanitizingName[23:39],", + (string) (len=51) "\tMyPrefix_0numberFirst: _SanitizingName[39:51],", + (string) (len=51) "\tMyPrefix_123456789a: _SanitizingName[51:61],", + (string) (len=51) "\tMyPrefix_123123Asdf: _SanitizingName[61:72],", + (string) (len=51) "\tMyPrefix_EndingHyphen: _SanitizingName[72:86],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x Sanitizing) String() string {", + (string) (len=38) "\tif str, ok := _SanitizingMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", + (string) (len=62) "\t_SanitizingName[0:11]: MyPrefix_TestHyphen,", + (string) (len=62) "\tstrings.ToLower(_SanitizingName[0:11]): MyPrefix_TestHyphen,", + (string) (len=63) "\t_SanitizingName[11:23]: MyPrefix_HyphenStart,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[11:23]): MyPrefix_HyphenStart,", + (string) (len=68) "\t_SanitizingName[23:39]: MyPrefix__underscoreFirst,", + (string) (len=68) "\tstrings.ToLower(_SanitizingName[23:39]): MyPrefix__underscoreFirst,", + (string) (len=64) "\t_SanitizingName[39:51]: MyPrefix_0numberFirst,", + (string) (len=64) "\tstrings.ToLower(_SanitizingName[39:51]): MyPrefix_0numberFirst,", + (string) (len=62) "\t_SanitizingName[51:61]: MyPrefix_123456789a,", + (string) (len=62) "\tstrings.ToLower(_SanitizingName[51:61]): MyPrefix_123456789a,", + (string) (len=62) "\t_SanitizingName[61:72]: MyPrefix_123123Asdf,", + (string) (len=62) "\tstrings.ToLower(_SanitizingName[61:72]): MyPrefix_123123Asdf,", + (string) (len=64) "\t_SanitizingName[72:86]: MyPrefix_EndingHyphen,", + (string) (len=64) "\tstrings.ToLower(_SanitizingName[72:86]): MyPrefix_EndingHyphen,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseSanitizing attempts to convert a string to a Sanitizing.", + (string) (len=55) "func ParseSanitizing(name string) (Sanitizing, error) {", + (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=71) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x Sanitizing) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *Sanitizing) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=34) "\ttmp, err := ParseSanitizing(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=44) "func (x *Sanitizing) Set(val string) error {", + (string) (len=31) "\tv, err := ParseSanitizing(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=40) "func (x *Sanitizing) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=36) "func (x *Sanitizing) Type() string {", + (string) (len=20) "\treturn \"Sanitizing\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=41) "\t// MyPrefix_Coke is a Soda of type Coke.", + (string) (len=26) "\tMyPrefix_Coke Soda = iota", + (string) (len=43) "\t// MyPrefix_Pepsi is a Soda of type Pepsi.", + (string) (len=15) "\tMyPrefix_Pepsi", + (string) (len=45) "\t// MyPrefix_MtnDew is a Soda of type MtnDew.", + (string) (len=16) "\tMyPrefix_MtnDew", + (string) (len=1) ")", + (string) "", + (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", + (string) "", + (string) (len=31) "var _SodaMap = map[Soda]string{", + (string) (len=33) "\tMyPrefix_Coke: _SodaName[0:4],", + (string) (len=33) "\tMyPrefix_Pepsi: _SodaName[4:9],", + (string) (len=34) "\tMyPrefix_MtnDew: _SodaName[9:15],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=31) "func (x Soda) String() string {", + (string) (len=32) "\tif str, ok := _SodaMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _SodaValue = map[string]Soda{", + (string) (len=49) "\t_SodaName[0:4]: MyPrefix_Coke,", + (string) (len=49) "\tstrings.ToLower(_SodaName[0:4]): MyPrefix_Coke,", + (string) (len=50) "\t_SodaName[4:9]: MyPrefix_Pepsi,", + (string) (len=50) "\tstrings.ToLower(_SodaName[4:9]): MyPrefix_Pepsi,", + (string) (len=51) "\t_SodaName[9:15]: MyPrefix_MtnDew,", + (string) (len=51) "\tstrings.ToLower(_SodaName[9:15]): MyPrefix_MtnDew,", + (string) (len=1) "}", + (string) "", + (string) (len=52) "// ParseSoda attempts to convert a string to a Soda.", + (string) (len=43) "func ParseSoda(name string) (Soda, error) {", + (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=59) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=45) "func (x Soda) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=49) "func (x *Soda) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=28) "\ttmp, err := ParseSoda(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=38) "func (x *Soda) Set(val string) error {", + (string) (len=25) "\tv, err := ParseSoda(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=34) "func (x *Soda) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=30) "func (x *Soda) Type() string {", + (string) (len=14) "\treturn \"Soda\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=65) "\t// MyPrefix_StartWithNum is a StartNotZero of type StartWithNum.", + (string) (len=47) "\tMyPrefix_StartWithNum StartNotZero = iota + 23", + (string) (len=55) "\t// MyPrefix_NextNum is a StartNotZero of type NextNum.", + (string) (len=17) "\tMyPrefix_NextNum", + (string) (len=1) ")", + (string) "", + (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", + (string) "", + (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", + (string) (len=48) "\tMyPrefix_StartWithNum: _StartNotZeroName[0:12],", + (string) (len=49) "\tMyPrefix_NextNum: _StartNotZeroName[12:19],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=39) "func (x StartNotZero) String() string {", + (string) (len=40) "\tif str, ok := _StartNotZeroMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", + (string) (len=66) "\t_StartNotZeroName[0:12]: MyPrefix_StartWithNum,", + (string) (len=66) "\tstrings.ToLower(_StartNotZeroName[0:12]): MyPrefix_StartWithNum,", + (string) (len=61) "\t_StartNotZeroName[12:19]: MyPrefix_NextNum,", + (string) (len=61) "\tstrings.ToLower(_StartNotZeroName[12:19]): MyPrefix_NextNum,", + (string) (len=1) "}", + (string) "", + (string) (len=68) "// ParseStartNotZero attempts to convert a string to a StartNotZero.", + (string) (len=59) "func ParseStartNotZero(name string) (StartNotZero, error) {", + (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=75) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=53) "func (x StartNotZero) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=57) "func (x *StartNotZero) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=36) "\ttmp, err := ParseStartNotZero(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=46) "func (x *StartNotZero) Set(val string) error {", + (string) (len=33) "\tv, err := ParseStartNotZero(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=42) "func (x *StartNotZero) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=38) "func (x *StartNotZero) Type() string {", + (string) (len=22) "\treturn \"StartNotZero\"", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=51) "\t// MyPrefix_Random is a StringEnum of type random.", + (string) (len=38) "\tMyPrefix_Random StringEnum = \"random\"", + (string) (len=51) "\t// MyPrefix_Values is a StringEnum of type values.", + (string) (len=38) "\tMyPrefix_Values StringEnum = \"values\"", + (string) (len=47) "\t// MyPrefix_Here is a StringEnum of type here.", + (string) (len=34) "\tMyPrefix_Here StringEnum = \"here\"", + (string) (len=1) ")", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x StringEnum) String() string {", + (string) (len=17) "\treturn string(x)", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x StringEnum) IsValid() bool {", + (string) (len=37) "\t_, err := ParseStringEnum(string(x))", + (string) (len=18) "\treturn err == nil", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _StringEnumValue = map[string]StringEnum{", + (string) (len=27) "\t\"random\": MyPrefix_Random,", + (string) (len=27) "\t\"values\": MyPrefix_Values,", + (string) (len=25) "\t\"here\": MyPrefix_Here,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseStringEnum attempts to convert a string to a StringEnum.", + (string) (len=55) "func ParseStringEnum(name string) (StringEnum, error) {", + (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=72) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum\", name)", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x StringEnum) MarshalText() ([]byte, error) {", + (string) (len=30) "\treturn []byte(string(x)), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *StringEnum) UnmarshalText(text []byte) error {", + (string) (len=42) "\ttmp, err := ParseStringEnum(string(text))", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=55) "// Set implements the Golang flag.Value interface func.", + (string) (len=44) "func (x *StringEnum) Set(val string) error {", + (string) (len=31) "\tv, err := ParseStringEnum(val)", + (string) (len=7) "\t*x = v", + (string) (len=11) "\treturn err", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// Get implements the Golang flag.Getter interface func.", + (string) (len=40) "func (x *StringEnum) Get() interface{} {", + (string) (len=10) "\treturn *x", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.", + (string) (len=36) "func (x *StringEnum) Type() string {", + (string) (len=20) "\treturn \"StringEnum\"", + (string) (len=1) "}", + (string) "" +} diff --git a/generator/assets/assets.go b/generator/assets/assets.go deleted file mode 100644 index 35788873..00000000 --- a/generator/assets/assets.go +++ /dev/null @@ -1,297 +0,0 @@ -// Code generated by go-bindata. DO NOT EDIT. -// sources: -// enum.tmpl (8.705kB) -// enum_string.tmpl (6.809kB) - -package assets - -import ( - "bytes" - "compress/gzip" - "crypto/sha256" - "fmt" - "io" - "io/ioutil" - "os" - "path/filepath" - "strings" - "time" -) - -func bindataRead(data []byte, name string) ([]byte, error) { - gz, err := gzip.NewReader(bytes.NewBuffer(data)) - if err != nil { - return nil, fmt.Errorf("read %q: %w", name, err) - } - - var buf bytes.Buffer - _, err = io.Copy(&buf, gz) - clErr := gz.Close() - - if err != nil { - return nil, fmt.Errorf("read %q: %w", name, err) - } - if clErr != nil { - return nil, err - } - - return buf.Bytes(), nil -} - -type asset struct { - bytes []byte - info os.FileInfo - digest [sha256.Size]byte -} - -type bindataFileInfo struct { - name string - size int64 - mode os.FileMode - modTime time.Time -} - -func (fi bindataFileInfo) Name() string { - return fi.name -} -func (fi bindataFileInfo) Size() int64 { - return fi.size -} -func (fi bindataFileInfo) Mode() os.FileMode { - return fi.mode -} -func (fi bindataFileInfo) ModTime() time.Time { - return fi.modTime -} -func (fi bindataFileInfo) IsDir() bool { - return false -} -func (fi bindataFileInfo) Sys() interface{} { - return nil -} - -var _enumTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x59\x5f\x8f\xdb\xb8\x11\x7f\xb6\x3e\xc5\x9c\x90\xbb\x93\x5c\x47\x4e\xd1\xa2\x0f\x39\xec\xc3\xe5\x4f\x83\x3b\xf4\x36\x41\x37\xcd\x4b\x10\x04\x5c\x69\xb4\xe6\xad\x44\xea\x48\xca\x2b\x57\xd5\x77\x2f\x86\xa4\x64\x59\x96\x77\xb7\xe9\xee\x05\x45\x5f\x0c\x53\x1c\x0e\xe7\x37\x33\x9c\x3f\x64\xdb\x3e\x85\x0c\x73\x2e\x10\xc2\x0d\xb2\x0c\x55\xd8\x75\xc1\x7a\x0d\x2f\x65\x86\x70\x85\x02\x15\x33\x98\xc1\xe5\x0e\xae\xe4\x53\x14\x75\x09\xaf\xde\xc2\xf9\xdb\xf7\xf0\xfa\xd5\x4f\xef\x13\xa2\xfc\x80\x4a\x73\x29\x9e\x43\xdb\x42\xb2\x75\x03\x70\x4c\xfe\x8e\x5b\xbe\x9f\x53\x7e\xe4\x27\x5f\xd4\xbc\xc8\xe0\x15\x33\xe8\xa6\x2f\x69\x4c\xc3\xd1\xbc\x81\x17\xbb\xfd\xac\x79\xb1\xa3\xb9\xa0\x62\xe9\x35\xbb\x42\x68\xdb\xc4\xff\xa5\xaf\xbc\xac\xa4\x32\x10\x05\x00\x00\x61\x5e\x9a\x30\x88\x83\xb6\x45\x91\xc1\x53\x9a\x1f\x43\x25\x20\x04\x34\x95\x42\xd3\x12\x9a\x7b\x42\x1f\xcf\x59\x89\xf0\xfc\x0c\x12\x1a\x24\x76\x44\x8b\x87\xf9\xf7\xbb\x6a\x34\x6f\x47\xc3\xfc\x96\x29\x4d\x73\x19\x4f\x0d\x84\x05\xd3\x46\xe6\xb9\x46\x13\x42\xf8\x2c\xf4\x64\xa0\x98\xb8\x42\x78\xa2\x7e\x12\x19\x36\x2b\x5a\x54\xd4\x23\x8e\x1f\x68\xa8\x09\xe5\xc2\xf2\x24\x2e\x6f\x2d\x17\xa2\xa9\x8a\x3a\xbd\x3e\x64\xed\x76\xfd\x17\xe4\x5c\x69\x03\x5d\xd7\xb6\xf0\x44\x0e\x0b\xfc\x3f\xbf\xdd\x08\x82\xdf\xd7\xed\x03\x3c\x07\xfc\xcd\x7f\x73\xa0\xc3\xcf\x61\xd7\xad\xd7\x70\x71\xcd\xab\x0a\x33\x70\x53\x6d\x8b\x85\x46\x3b\xd1\xb6\x9e\xfc\x9d\xc2\x9c\x37\x98\xd1\xb2\xae\x03\xae\x81\xd1\x64\xaf\xcc\xae\x03\x99\x83\xa1\x3d\x87\x25\xee\x7b\x62\x6d\xd3\x23\xe5\x79\xbf\xff\x4b\x59\x96\x28\x0c\x4d\x8c\xf7\x19\x7d\x26\x7a\xb7\x94\x4c\x7d\x4a\x92\x3d\x2e\x8f\xfe\x99\x55\xcf\x58\xb2\x33\xe0\xd2\x30\x47\x48\x6e\xf1\x2c\x1c\x94\xd7\x75\xf0\x07\x18\x29\x93\x96\xda\x3d\x9d\x0e\xfc\x8a\xb1\x7d\xc6\x94\xc7\x9b\x9c\xe4\xf6\xe4\x33\x19\xca\x32\xb0\xa6\x3c\xb4\xae\xfb\xe3\x3d\xcc\x61\x8e\xc9\x95\xc1\x60\x59\x15\x74\x58\x42\x6d\x14\x17\x57\xa8\x42\x48\xec\xe9\xd8\x32\x05\x9f\xdb\x76\xef\xc1\x5d\xf7\x0b\xab\xe0\x8c\xf6\x2f\x59\xc5\xf3\x9d\xf3\x35\x4b\x4c\x26\xb6\xeb\x81\x97\x55\x81\xa4\x61\x0d\x66\x83\xfe\x2b\x2a\xe0\xc2\xa0\xca\x59\x8a\x49\x90\xd7\x22\x85\xa8\x81\x43\xe6\xb1\xa7\x8d\x62\x70\xa2\x40\x1b\x2c\x78\x4e\x83\x15\xc8\x6b\x42\x77\x2c\xce\xc7\xe6\xd3\x0f\x34\xd9\x06\x8b\x85\x42\x53\x2b\x41\xf4\xc1\xa2\x0b\xfa\x61\x5e\x9a\xe4\xa2\x52\x5c\x98\x3c\x0a\x0f\xd7\x47\xdf\x66\x71\xb8\x82\x26\x0e\xe6\xe1\xda\x43\xe4\x00\xd7\xe2\x00\x72\x52\xc8\x1b\x54\x29\xd3\xd8\xa3\x7f\xc7\x94\xc6\xc3\xe5\xc0\x0c\x69\x97\x14\x21\x21\x95\x62\x8b\xca\x00\xeb\xc1\x19\x69\x1d\x7c\xbc\xc0\x6b\x66\x86\x55\x24\xe8\x30\xb9\x95\x31\x44\x87\x93\x2b\x40\xa5\xa4\x8a\xbd\xbe\x9a\x13\xda\xb2\x68\x3e\x12\xa3\x23\x95\x35\x2b\x10\xbc\x08\x16\x5d\xdb\xf2\x1c\x12\x21\x7b\x64\x74\x72\x5e\xd2\x7f\x2e\x34\x0a\xcd\x0d\xdf\x22\x54\x24\xdf\x0a\x32\x02\xa0\xb1\x62\x14\xd9\xa1\x90\xf2\xba\xae\x08\x55\xa5\x70\x8b\xc2\x40\x2d\x04\xa6\xa8\x35\x53\x3b\x48\xa5\x36\x74\x7e\x7b\xb5\x91\x02\x06\x4d\xf0\x1c\x6e\x10\x32\x29\xbe\x37\x20\x10\x33\x30\x32\xb9\x07\x12\xb7\x5a\x27\xef\xe5\xdf\x88\xab\x55\x51\x7c\x1b\xb4\xde\xf1\x17\x1e\x25\x2b\x51\xdb\x70\xda\xd3\x4e\x74\xfe\x2c\x5e\x59\xef\x79\x4d\xda\xcd\xa3\xf0\x5b\x4d\x51\x49\x48\x32\xe2\x96\x15\x3c\x83\xa9\x1d\x8c\xda\xc1\xc7\x6f\xf5\xa7\x70\x05\xc4\x7d\x05\xbd\x8c\x3f\x4b\x2e\xa2\x09\x0a\xfa\xd5\x2b\x08\x57\x10\xc6\xb1\x0f\x46\x14\x11\x1e\x50\x22\x2f\x47\x3c\x0e\x75\x36\x83\x91\xce\x93\xb2\xd6\xc6\xda\xd2\x27\xca\x5f\x6a\x6d\xe6\xdc\xd8\xbb\xae\xbe\xd5\x77\x57\xc0\x44\x06\x15\x13\x3c\xd5\xc4\xdd\xcb\x65\xa5\xf2\x7e\x7d\x82\xff\xa1\x6f\x4f\xf6\x6e\x83\xc5\x96\x15\xd6\xc3\xc9\x11\x4e\x2d\x8f\xad\xbf\x10\xd1\x37\x67\x64\x6f\xeb\x01\x56\x98\x08\x95\x8a\xc7\xf1\x60\xcb\x8a\xa0\x0b\xfa\x9c\xd1\xeb\xa2\x32\x8a\xb4\x70\x2a\x32\xbd\x33\x2a\x8a\x61\x79\x2c\x9c\x67\xfa\x5d\x33\xc3\xb3\x64\x4a\x6f\x58\xd1\x6b\xd7\x8d\xde\x63\x63\xa6\x31\xd2\xd0\x37\x4f\x5d\xa0\x82\x12\xcd\x46\x66\xa7\xe3\xe4\x88\x55\x14\x43\xf4\xf1\xd3\xe5\xce\xe0\x38\x0a\x78\xa9\xdc\x44\xd4\x24\x7d\x60\x8d\xdd\x61\x70\x11\xeb\x1f\xa2\xbc\x43\xa4\x5a\xdc\x22\xd4\x72\x2a\xd5\x01\xbf\xc8\x32\x70\x02\xc4\x4e\x32\x12\x4c\xf8\xb2\xc8\x59\xdb\x12\xc5\xc1\xc2\x94\xd5\x97\x59\xd8\xe3\x44\xe5\x22\xfe\xb2\x81\x33\x30\x65\x35\x28\xc0\x81\x9d\xd8\x45\x2a\x48\xf4\x6f\x85\xfd\x11\x75\x51\x70\x61\x86\xff\xda\xa8\xae\x9b\x4b\x05\xaf\x95\x3a\xe7\xc5\x3b\xa3\xe0\xcc\xa1\xd1\xc9\x39\xde\x44\xa1\x2b\x7f\x2a\x69\xb3\x9b\x75\x7a\x5e\x84\x31\xac\xd7\x20\x05\x42\x85\xca\x95\x2c\xb9\x54\xd0\x57\x9b\x69\xc1\xf4\x06\xb5\xcb\x99\x29\x13\x47\x19\x33\x65\x42\xcc\x27\xcc\x23\x9d\x13\x6d\xe4\x64\x18\xc8\xdb\x2e\x06\xf2\xfa\xc3\xac\xe0\x88\xce\xf6\xba\xb3\xca\x3a\x8a\x2f\x83\x52\x49\xa1\x36\xfc\xff\x08\x37\x3c\x43\xe5\x0b\x4e\x99\x83\x26\xf9\xd8\x65\x81\x16\x9a\x4e\x2c\x55\xa6\xf8\x16\x95\x2b\x3b\xdd\x5e\x1a\x98\x71\xae\x24\x2b\x5b\xba\x6d\x10\x0a\xae\x8d\xd5\x05\x36\x15\x66\x1c\x45\xba\x0b\x16\xfa\x86\x9b\x74\x03\x5b\xb2\xbe\x2b\xc0\x22\x62\x6c\x05\x4f\x5d\xee\x31\x7f\xf9\xf3\xf3\x13\x22\x6f\x63\x4f\xe5\x5c\xca\x91\x39\x6f\x9a\x77\xa6\x6d\xec\xc2\xff\xc8\xfa\x14\x70\x67\xbc\x8b\x70\x51\x44\xa7\x18\x69\xa3\xde\xc6\x69\x99\xaa\x19\xa7\x4e\xb6\x8f\x89\x44\xef\xd4\xbc\x82\xad\xf7\x65\x6d\x14\xc5\xce\xe4\x47\x23\x79\xb4\x8d\x7f\x70\x13\x23\x1b\x8c\x65\x9d\x8a\xc9\x0a\x7f\x5a\x17\x0b\xf2\xed\x45\x37\x94\xb9\x16\xae\x3b\x5a\x77\xc3\xf5\x27\x6d\x1b\x7f\x25\xd8\xfb\xfd\x1f\x14\xfe\x21\xf9\xe0\x1c\xdb\xbd\xcb\xdc\xe9\x30\xcb\x63\x1e\x84\xc4\x0b\x68\xe5\xf3\x61\xe4\x54\x2c\x08\x9c\x68\x76\x97\x65\xbf\x75\x7d\x9f\xbd\xeb\xfb\xf9\xf4\xd2\xf3\xfa\x2f\xe4\x9a\xb0\x5e\x1e\xf0\x76\x22\x3c\x06\xf7\xbc\x90\x8c\xd8\x53\x24\xfc\x55\x4b\xd1\xa7\x37\x0d\xb8\x45\xb5\x33\x1b\x5b\x01\x92\x1f\x79\x4a\x5b\x33\x98\xef\xe9\x8b\xa8\xcb\x4b\x54\x77\xea\xe6\x41\xb6\x78\x14\xcd\xd6\x8f\x69\xb6\xfa\x51\xed\xb6\xdc\x87\xd1\x2f\x65\x7f\x5b\x34\x5a\x7e\xad\xe8\xbb\x7c\xb8\xf0\xdb\x05\x8b\xa1\xc0\x08\x4e\x56\x15\xda\x15\x94\xeb\x35\xb8\x9c\x38\x49\xf2\x2e\x5f\xba\xb9\x7b\xf5\xc6\x96\x92\xaa\xbd\x71\xa6\x9d\xa9\xf9\xf6\xc5\xde\x6a\x28\x7f\x5c\x5f\xf1\x35\xa4\xb1\xbe\x1a\x35\x23\x59\x86\x52\xcc\xff\xe9\x8b\xe5\xbc\x60\x57\x5e\xc4\x0b\x3c\x2a\x47\xdf\xc8\x82\x89\x2b\x20\x22\x5f\x63\x0c\x42\x02\xc9\x78\x5b\x89\x84\x86\xac\x39\x34\x18\x43\x2d\xba\xbd\xb5\xe6\x24\x07\x08\x86\xa4\x32\x2a\x34\x5d\xf1\xfc\xe6\x76\x19\xdf\xa0\x31\x63\x4d\xde\x25\xe4\x1b\xa4\x4a\x7e\x54\xc2\x8d\x74\xb8\x6c\xfc\x9e\xf6\xc2\x6d\xb2\xe9\x15\x37\x9b\xfa\x32\x49\x65\xb9\xd6\x55\xfe\xc7\x3f\xad\xab\xbf\x92\x22\x27\x3a\xba\x65\x67\x62\x7a\x70\xe3\xe2\x77\x9d\x5c\x95\x84\x27\xeb\xe8\x99\x12\x9a\xec\x68\xcb\xde\xf3\xba\x28\x26\x3d\x93\x36\xaa\x4e\x4d\x4b\x1d\xe9\xf8\xfb\x64\x18\x2c\x3e\xd8\x76\x96\xce\xe8\xe2\x52\xca\xa2\x6d\xd7\x4b\xf8\x31\xcb\x40\xcb\x92\x80\xe5\x92\x8e\xbf\x91\x70\xb3\x41\xb3\xa1\x32\x7b\xc3\xb5\x8f\x0b\x37\x4c\xdb\x7b\xb0\xac\xb6\x98\xf6\x5d\x0c\x8d\xa4\xb2\x7d\xe9\x72\xdd\xf9\xcb\x8e\x51\x97\xb6\xb8\x40\xb3\x58\x8c\xf6\xa4\x96\x19\x5c\xcf\x6c\x15\x78\x8e\x37\xc7\x90\xac\x77\x1d\x56\xdf\xcd\x0c\x72\x7b\x2c\x9a\xa4\xaf\xd8\x6d\x8f\xb0\x43\xbd\x82\x1b\x04\x7e\x25\xa4\x42\x87\xc1\xfa\xe7\x0a\xb8\x81\x1b\x5e\x14\xf0\x6b\xad\x0d\x5c\x22\x50\x9f\x20\x5c\x8f\xef\x8a\xe4\xde\x52\xde\x39\xfe\xd3\x4e\x62\x4e\xc0\x7b\x76\x13\xfe\x9a\x75\xa4\xb9\x26\xa1\x33\x7b\x06\x46\xd5\xb8\xd7\xda\x6c\xdb\xd1\x24\xd3\x7b\x83\x26\x71\xb6\x9e\xe9\x46\x56\x90\xb3\x42\xe3\xa4\x29\x71\x01\x7b\xca\x28\xd9\x4b\x1f\x93\xa2\x7b\xa6\xd1\x3e\xe8\xc7\x63\x9d\xf9\xb8\x73\x98\x88\xbe\x38\x40\xce\xa9\xf3\xce\x20\xc9\x73\xf8\xc6\x0b\x3a\xea\x66\x05\x2f\xfa\x3b\xab\xe3\xd6\x8a\xa5\x29\x56\x46\xbb\xc0\x6a\x5b\x29\x92\xdc\x35\x5c\xc9\x34\xec\x4e\x34\xf4\xa0\x19\xe1\xb1\x00\x0f\x69\x6c\x6a\xdd\x99\xac\xe6\xdc\xec\xd6\xeb\x96\x9f\x2f\xde\x9e\x43\x2a\x95\xc2\xd4\x14\x3b\xd0\xa8\x38\x2b\xf8\x3f\xa9\x3b\x9d\x8b\x4e\x46\x02\xad\xe8\x61\x8a\x59\x98\x23\xd6\xf3\xd7\x2f\xee\x35\x88\xdc\xea\xc2\x5e\x18\x84\xf4\x37\xb4\xf0\x85\xf7\xcb\x11\x7c\xaa\x5d\x13\xcf\x33\x12\x53\x9b\x8d\x95\xe2\xef\x73\x3c\xe3\xf9\xcb\x9c\x09\xe0\x0c\xef\x82\x9c\x2b\x59\x4e\x40\xcf\x06\x87\x83\x1d\xa2\xcb\x99\xbb\x9d\x51\x10\x08\x16\x5b\xa6\xa0\x19\x87\x11\x77\x6e\x9f\x9f\x39\xbc\x03\xb7\xe8\x72\x05\xdf\x35\xd3\xdb\x9d\x99\xcb\x1d\x77\xea\x85\x3b\xe6\x4d\x3c\xc9\xc9\x87\xee\x70\xe8\x19\x4c\x64\x5f\x90\xa9\xc8\x74\x2e\x59\x11\xb8\xe3\xf9\xdb\x93\xc2\x85\x51\xf7\xcc\x0b\x64\xc9\xc7\x4d\x0d\x0f\x75\xc0\xad\xa4\xbf\xf3\x19\xff\x1d\x0f\xb6\x85\xf7\xff\x78\xb6\x2d\xf0\xff\x95\xe3\x7d\x70\xba\xf7\x3d\xc4\xfe\x49\x7e\x78\xc6\x1c\x9e\xe5\x67\xde\x5d\xc8\x70\x6d\xeb\xab\xde\xd1\xb3\x5e\x2e\x55\x8a\xf6\x91\x0a\xa8\xe6\xed\x3d\xd0\x3d\x15\x75\xdd\xcc\xc5\xb0\x7d\xc5\xb1\xb5\x8b\x60\xe5\xc0\xc9\x3f\x0a\xce\x91\x3a\x5c\x64\x30\x7b\x1b\x2a\x73\xa8\xa4\xd6\xfc\xb2\xe8\xaf\x30\xfb\xeb\x53\x99\xcf\x3f\x0f\xce\x30\x8d\x62\xf8\xf8\x69\x5f\xc2\x9b\xb2\x22\x4b\x94\xec\x1a\xa3\xfe\xfb\x0a\x0a\x9c\x7f\x82\x8a\xa9\xf7\x97\xd5\x2e\xb2\xd7\xf0\xb3\x14\x83\x35\x4c\x59\xed\xad\xf1\x74\x6c\x84\x7f\x07\x00\x00\xff\xff\x49\x18\xa5\x7f\x01\x22\x00\x00") - -func enumTmplBytes() ([]byte, error) { - return bindataRead( - _enumTmpl, - "enum.tmpl", - ) -} - -func enumTmpl() (*asset, error) { - bytes, err := enumTmplBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "enum.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfa, 0x4f, 0xe4, 0xcd, 0x99, 0xc, 0x30, 0x87, 0x37, 0xd9, 0xe9, 0x1f, 0x3d, 0xf9, 0xb6, 0xc9, 0x71, 0x22, 0xdd, 0x20, 0xd9, 0x4c, 0x11, 0x45, 0x79, 0xeb, 0xe7, 0xb1, 0x73, 0x2f, 0xb, 0x36}} - return a, nil -} - -var _enum_stringTmpl = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x58\xdf\x8f\xe3\xb6\x11\x7e\xb6\xfe\x8a\x89\x90\xa4\xd2\x42\x91\x5b\xb4\xe8\xc3\x15\x7e\x08\x82\xf4\x90\xa0\xdd\x1e\xba\xd7\xbc\x1c\x0e\x0b\xae\x34\x5a\x33\x4b\x91\x0a\x49\xdb\x72\x05\xfd\xef\xc5\x90\x94\x2c\xcb\x5a\xef\xa5\xd9\xa6\x28\x7a\x0f\x07\x53\x24\x87\xdf\x7c\xfc\xe6\x07\xb7\xeb\xbe\x82\x12\x2b\x2e\x11\x62\x94\xbb\xfa\xde\x58\xcd\xe5\x63\xdc\xf7\x51\xa1\xa4\xb1\x90\x44\xb4\xe4\x73\x9a\xbb\x65\x35\xc2\x9b\x0d\xe4\x34\xc8\xdd\xe8\xab\xbe\x3f\xcd\xbf\x3f\x36\x93\x79\x37\x1a\xe7\xf7\x4c\x1b\x9a\x2b\x79\x61\x21\x16\xcc\x58\x55\x55\x06\x6d\x0c\xf1\x6f\xe3\xb0\x0c\x34\x93\x8f\x08\x9f\xeb\xef\x64\x89\x6d\x46\x9b\xc4\x6e\x62\xf1\x07\x1a\x1a\xe8\xfb\x68\xd5\x75\xc0\x2b\xc0\x9f\xc2\x1a\x0f\x26\xbe\x8f\xfb\x7e\xbd\x86\xbb\x27\xde\x34\x58\x82\x9f\xea\x3a\x14\x06\xdd\x44\xd7\x85\xe5\xef\x34\x56\xbc\xc5\x92\xb6\xf5\x3d\x70\x03\x8c\x26\x07\x27\xfb\x1e\x54\x05\x96\x1c\x18\xb7\xfc\x9d\x1d\xfc\x14\x19\x94\xa5\x07\xf1\x15\xa1\x08\x0b\xbe\x51\x75\x8d\xd2\xd2\xc4\xf4\xa8\xc9\x67\x5a\xef\xb7\x02\xc0\xb3\x60\xce\x71\x6c\x20\xbe\x84\x10\x47\x27\x53\x69\x14\x79\x32\x72\xc9\x6a\xc7\xce\x9e\x69\xb8\xef\xba\xd3\x2d\xf5\xfd\xad\x9b\xda\x40\xd7\x49\x56\xf3\xea\xe8\x09\xed\xfb\x28\x72\x50\x2f\x97\x6a\xb4\x3b\x2d\x89\x16\xc1\x8d\x25\x36\x1a\x65\x0c\x7f\x10\x08\x5e\x20\x9e\x5c\x43\x33\xe7\xfb\xf3\xa8\xda\xc9\x62\xc9\x68\x92\xc2\x87\x8f\x61\x77\x17\xad\x6c\xdd\xd0\xd5\xd6\xec\x09\x93\xe1\x7b\x06\x02\x65\xb2\x04\x3e\x4d\xa3\x55\xa1\x9a\x63\x62\xeb\x26\x5b\x74\x2f\x8d\x56\x1e\x35\xd8\xba\x89\x9c\x9e\x50\x96\x4e\x5a\xe4\xe5\x9d\x3f\x98\xd7\x8d\x40\xba\x10\x03\x76\x8b\xe1\x2b\x6a\xe0\xd2\xa2\xae\x58\x81\x01\x7f\xd2\xce\x5c\x48\xc3\xda\x24\x85\x93\x0f\xe1\x40\xff\x21\x69\xd3\xe8\xb5\xce\xfa\xce\xfc\xc0\x04\x2f\x93\x14\x1e\x94\x12\x74\xd4\x7d\x06\xa8\x35\x31\xf6\x8e\x69\x83\xe7\x1b\x92\x11\xc1\x89\x05\x5a\xbd\xd9\x80\xe4\x82\x50\x2d\x88\xc2\x85\x93\x13\x05\xec\x64\xcd\x9a\x51\x17\x90\x0b\x75\x40\x5d\x30\x83\x10\xd8\x5b\x38\x13\x98\xb5\x58\x37\xe4\x9c\x82\x42\xc9\x3d\x6a\x0b\x6c\x20\xc7\x2a\x17\x52\x0b\xca\x58\x82\x4f\xd2\x0d\x3b\x53\x48\xce\x27\x9d\xdf\x4a\xa7\x44\x02\xaf\xa0\xcd\x40\x3d\x11\x0d\x4b\xde\x7c\x20\x43\x1f\xff\x44\x2b\xba\x68\x35\x30\xd1\x66\x8e\x85\x55\xdf\x75\x2e\x4e\xd4\xe0\x19\x05\xea\x37\xf4\x9b\x4b\x83\xd2\x70\xcb\xf7\x08\x0d\xe1\xcb\xa0\x24\x07\x0c\x36\x4c\x33\x8b\x20\x94\x7a\xda\x35\xe4\x55\xa3\x71\x8f\xd2\xc2\x4e\x4a\x2c\xd0\x18\xa6\x8f\x50\x28\x1f\x23\x03\x6d\x44\xc0\xc8\x04\xaf\xe0\x80\x50\x2a\xf9\x1b\x0b\x12\xb1\x04\xab\xf2\x4f\xf0\xc4\xef\x36\xf9\x7b\xf5\x17\xb2\xea\x28\x4a\xaf\xb9\x36\x24\x84\x55\xf0\xd2\xc5\x31\xa9\x7f\x58\x3b\xe3\x3c\x8e\xd3\x0c\xaa\xda\xe6\xdf\x12\xbd\x55\x12\x7f\x61\x28\x11\x4a\x45\xb7\xb8\x27\xf5\xc1\xfc\x22\xac\x3e\xc2\x87\x2f\xcc\xc7\x38\x03\x32\x9f\xc1\x00\xf2\x7b\xc5\x97\xc3\x36\x83\x38\x83\x98\x54\xe9\x00\x0a\x83\xaf\x0a\x29\x00\x49\xa7\xb9\xb5\x1f\x13\x62\xbd\x33\xd6\xdd\x26\xdd\xf5\x7a\x0d\x7f\xdd\x19\xbb\x24\xe4\x20\x5e\x73\x55\xbd\x19\x30\x59\x42\xc3\x24\x2f\x0c\x59\x0f\xb8\x1c\xaa\xa0\xec\x67\xec\x9f\xab\x7b\x76\x76\x17\xad\xf6\x4c\x5c\x8d\xed\xe0\x21\xd5\x3b\xad\xe1\x33\x17\xd2\x4e\x03\x0e\x4c\x82\x5a\xa7\xd1\xea\xc4\xe9\x9e\x09\x97\xfd\x3c\x1b\x03\x17\x8d\xd5\xc4\xc2\x73\xf9\xe6\x9d\xd5\x49\x0a\x37\x97\xe0\x82\xd1\x2f\xdb\x05\x9b\x35\xd3\x66\xcb\xc4\xc0\xae\x1f\xbd\xc7\xd6\xce\x33\x9f\xa5\x6f\x61\xb5\x40\x0d\x35\xda\xad\x2a\x9f\xcf\x7e\x13\x53\x49\x0a\xc9\x87\x8f\x0f\x47\x8b\xd3\x3c\x10\x50\xf9\x89\x49\xf2\xcb\x86\x74\xb7\x5e\xc3\x3f\x64\xfd\x02\xa2\x9d\xbc\x82\xe9\x66\x0e\xea\xcc\x5e\xe2\x0c\xf8\xf3\x53\x0f\x2c\xd4\xb4\x4f\x49\xd3\xb4\x39\x5d\xbc\xd2\x53\xee\x76\x57\x7a\xd3\xc2\xc6\x95\xb3\x61\xc2\xbb\x37\xbb\x08\xa5\x21\x37\x3f\x09\xf7\x9f\xdc\x09\xc1\xa5\x1d\x7f\x1b\xab\xfb\x7e\x29\xfb\x7f\xab\xf5\x2d\x17\xef\xac\x86\x8d\xc7\x6f\xf2\x5b\x3c\x24\xb1\xef\xb9\x1a\xe5\x8a\x94\x53\x39\x17\x71\x0a\xeb\x35\x28\x89\xd0\xa0\xf6\x7d\x51\xa5\x34\x34\xac\x78\x62\x8f\x08\x85\x60\x66\x8b\xc6\x97\xbe\x82\xc9\x8b\xc2\x57\x30\x29\x97\xeb\xde\x05\xcb\xb4\x36\xf1\x18\xc6\xe5\x5d\x9f\x02\xc9\xfc\xbc\x10\xf8\x45\x9b\x13\x77\x8e\xac\xcb\x8c\x32\xb2\x4a\x8c\xba\x94\xff\x35\x1c\x78\x89\x3a\xb4\x9b\xaa\x02\x43\x00\x19\x35\x37\xe4\x9b\xc9\xdd\xaa\x52\xf3\x3d\x6a\xdf\x74\x0e\xdd\x0e\xb3\x5e\x3d\xaa\x71\x0d\xe2\x16\x7d\x7b\x44\x64\x60\xdb\x60\xc9\x51\x16\xc7\x68\x65\x0e\xdc\x16\x5b\xd8\x93\x0c\x7c\xeb\x96\x90\x61\x87\xdc\xd5\x1e\xaf\x83\x37\x0e\xb4\x17\xcc\xb2\x5e\xf6\x69\xd8\xe0\x95\xf6\xf2\x86\x20\xb0\x7d\x3a\x6c\x3c\x9f\x7f\x33\xd0\xb4\x0f\xd3\x37\x97\xf3\x44\x6d\xa0\x95\x58\x1d\x94\xf7\x9c\x7c\xa2\x15\x09\xd5\x5b\xbd\x19\xcd\x9e\x1c\xfc\x77\xcd\x5d\xf3\xf2\x86\x78\x29\xb1\x62\x3b\x61\xdf\x9c\x45\xcd\x28\x63\x2e\x7d\xbd\x18\xc5\x3a\x2b\x1c\x3e\x65\x8e\x71\x15\x3d\x1b\x4c\xc6\x27\xce\xf5\x1a\xbc\x12\x66\xda\xf6\x2a\xf1\x73\x9f\xd4\xd9\xb9\x95\x94\xd5\xa6\xfa\x5a\xc8\x6d\x6d\x3e\xf4\x9b\xd9\x18\xf5\xbe\x80\xfe\x37\xd0\x8c\x29\x36\xbb\x4c\x41\xe1\xc7\x50\x15\x2a\xc1\x1e\x03\xc6\x3b\xbc\x48\xbc\x6f\x95\x60\xf2\x11\x68\x51\x08\xad\x11\x25\x10\xc8\x6b\xa9\x01\x2d\x65\x86\xb1\x92\x8e\x59\x77\x7f\x35\xe7\xee\x99\x48\xa3\x51\xf5\x93\x04\xeb\xcb\xc4\xdb\xeb\x18\xdf\xa2\xb5\x53\x2a\x5f\x02\xf9\x16\xa9\x64\x4d\x52\xd7\x84\xc4\x9b\x36\x9c\xe9\x9e\xc6\xb3\x43\x1f\xb9\xdd\xee\x1e\xf2\x42\xd5\x6b\xd3\x54\xbf\xfb\xfd\xba\xf9\x33\x11\x39\xe3\xe8\xca\xc9\x64\x74\xe9\x71\x12\xcf\x94\xff\x6c\xfd\x58\x28\x1d\x74\x8f\x2e\x82\x6e\x77\x42\xcc\x9a\x03\x63\xf5\xae\xb0\x1d\xb5\x5e\xd3\xef\xb3\x61\xb4\x72\x0f\x19\x58\xd1\x3f\x7a\xcb\x74\xdd\xfa\x06\xbe\x2e\x4b\x30\xaa\x26\xc7\x2a\x05\xcc\x3d\x21\x0e\x5b\xb4\x5b\x2a\x2f\x5b\x6e\x42\x72\x3f\x30\x03\x06\x2d\x94\x3b\xe7\xd3\xa9\x5e\xd3\x48\x69\xd7\x80\xdd\xac\xfb\xd0\xd7\x4f\xda\x91\xd5\x1d\xda\xd5\x6a\x72\xa6\x7b\x0a\xfa\xe6\xd0\x11\x78\x8b\x87\x4b\x97\x9c\xba\xce\xab\x4e\xbb\xe0\xb9\x8b\x8b\x20\xb8\x36\x1f\x0a\x96\x2b\x91\x47\xea\x78\x0f\x08\xfc\x51\x2a\x8d\xde\x15\x27\xd3\x0c\xb8\x85\x03\x17\x02\x7e\xdc\x19\x0b\x0f\x08\x54\x26\x43\x8e\xf2\x25\x22\x5a\xdd\xfb\x52\x4c\x86\xe8\x55\x0c\x4c\x1e\x69\x5c\x6c\xb1\x78\x02\xe1\x80\x19\xd8\xb2\xa6\x39\x0e\x97\x3b\xbc\x37\x7f\x66\xd1\x5d\xf2\xe9\x17\x14\xde\x36\x9f\xb7\xca\x6d\xee\x6f\x7d\xa9\x1e\x67\x50\x31\x61\x70\x56\x96\x7d\xb2\x9f\x5b\xca\x4f\xa8\xd2\x68\x75\xb2\x9a\x9c\x1e\xb7\xe9\x94\x8b\x90\x82\x26\x62\xfe\x25\xc9\x72\x89\xa6\x17\x13\x26\xaf\xe0\xb3\x00\x74\xd2\xd0\x49\x2e\x86\x97\xda\x65\x73\xc1\x8a\x02\xe9\x1d\xcd\xa5\xfd\xe3\x1f\x5c\xb1\x22\xe4\xbe\xe5\xc8\x2f\x52\xf0\x8c\xa2\x57\x2d\x0f\xff\x29\x8f\xc7\x9a\x36\xbf\xde\x85\x12\xe7\x03\xf5\xea\x1b\xe3\xfb\xbb\xbf\xdd\x42\xa1\xb4\xc6\xc2\x8a\x23\x18\xd4\x9c\x09\xfe\x4f\x6a\xd0\x96\x32\x95\x55\x40\x3b\x06\x37\xe5\xa2\x9b\x13\xd3\xcb\x6f\x0e\xff\xe7\x50\xd2\xd5\x9d\x6b\x9a\x63\xfa\x19\x3b\xf7\x65\x10\xe6\xc4\xfd\x1f\x8d\x92\x79\xb0\x99\xc8\xf9\x9d\x4d\x49\x09\x8f\x98\x60\x78\xf9\x09\x33\x73\xb8\xc4\x97\x5c\xae\xb4\xaa\x67\x4e\x2f\x46\xfd\xd9\x09\xc9\xc3\xe5\x8b\x46\xe6\x54\xc4\x37\x60\xf5\x0e\xe9\xa9\xaa\xa1\x9d\xe6\x87\x31\x11\x3a\x7f\x47\x6b\xc9\x43\x06\x5f\xb6\xf3\x17\xce\xc2\x03\xc7\x87\xbd\xf4\x71\xde\xa6\xb3\xfa\x7c\x2e\x87\x73\x65\xd0\x6b\xfc\xe7\x57\x2d\xba\x3a\x5f\xb8\xc8\xb9\xcb\xf9\xeb\x05\xe2\xce\xea\x4f\xac\x11\x74\x93\x74\xc2\xab\xd6\x87\xb3\x9c\xff\x5a\x01\xee\x90\xfe\xca\x31\xfe\x2b\x06\xb6\x73\xef\xff\x31\xb6\x9d\xe3\xff\x2b\xe1\x7d\x16\xdd\xbe\x37\xfd\x57\x00\x00\x00\xff\xff\x3c\xf0\x77\x54\x99\x1a\x00\x00") - -func enum_stringTmplBytes() ([]byte, error) { - return bindataRead( - _enum_stringTmpl, - "enum_string.tmpl", - ) -} - -func enum_stringTmpl() (*asset, error) { - bytes, err := enum_stringTmplBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "enum_string.tmpl", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfe, 0xa9, 0x87, 0x91, 0xfe, 0x92, 0x4a, 0x77, 0xd1, 0x36, 0x45, 0x3b, 0x9a, 0x5b, 0x45, 0x6f, 0x66, 0xf9, 0x6e, 0x76, 0xbd, 0xdd, 0xbd, 0x93, 0xbc, 0xc8, 0x1c, 0x97, 0x7, 0x89, 0xb3, 0xd1}} - return a, nil -} - -// Asset loads and returns the asset for the given name. -// It returns an error if the asset could not be found or -// could not be loaded. -func Asset(name string) ([]byte, error) { - canonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[canonicalName]; ok { - a, err := f() - if err != nil { - return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) - } - return a.bytes, nil - } - return nil, fmt.Errorf("Asset %s not found", name) -} - -// AssetString returns the asset contents as a string (instead of a []byte). -func AssetString(name string) (string, error) { - data, err := Asset(name) - return string(data), err -} - -// MustAsset is like Asset but panics when Asset would return an error. -// It simplifies safe initialization of global variables. -func MustAsset(name string) []byte { - a, err := Asset(name) - if err != nil { - panic("asset: Asset(" + name + "): " + err.Error()) - } - - return a -} - -// MustAssetString is like AssetString but panics when Asset would return an -// error. It simplifies safe initialization of global variables. -func MustAssetString(name string) string { - return string(MustAsset(name)) -} - -// AssetInfo loads and returns the asset info for the given name. -// It returns an error if the asset could not be found or -// could not be loaded. -func AssetInfo(name string) (os.FileInfo, error) { - canonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[canonicalName]; ok { - a, err := f() - if err != nil { - return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) - } - return a.info, nil - } - return nil, fmt.Errorf("AssetInfo %s not found", name) -} - -// AssetDigest returns the digest of the file with the given name. It returns an -// error if the asset could not be found or the digest could not be loaded. -func AssetDigest(name string) ([sha256.Size]byte, error) { - canonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[canonicalName]; ok { - a, err := f() - if err != nil { - return [sha256.Size]byte{}, fmt.Errorf("AssetDigest %s can't read by error: %v", name, err) - } - return a.digest, nil - } - return [sha256.Size]byte{}, fmt.Errorf("AssetDigest %s not found", name) -} - -// Digests returns a map of all known files and their checksums. -func Digests() (map[string][sha256.Size]byte, error) { - mp := make(map[string][sha256.Size]byte, len(_bindata)) - for name := range _bindata { - a, err := _bindata[name]() - if err != nil { - return nil, err - } - mp[name] = a.digest - } - return mp, nil -} - -// AssetNames returns the names of the assets. -func AssetNames() []string { - names := make([]string, 0, len(_bindata)) - for name := range _bindata { - names = append(names, name) - } - return names -} - -// _bindata is a table, holding each asset generator, mapped to its name. -var _bindata = map[string]func() (*asset, error){ - "enum.tmpl": enumTmpl, - "enum_string.tmpl": enum_stringTmpl, -} - -// AssetDebug is true if the assets were built with the debug flag enabled. -const AssetDebug = false - -// AssetDir returns the file names below a certain -// directory embedded in the file by go-bindata. -// For example if you run go-bindata on data/... and data contains the -// following hierarchy: -// data/ -// foo.txt -// img/ -// a.png -// b.png -// then AssetDir("data") would return []string{"foo.txt", "img"}, -// AssetDir("data/img") would return []string{"a.png", "b.png"}, -// AssetDir("foo.txt") and AssetDir("notexist") would return an error, and -// AssetDir("") will return []string{"data"}. -func AssetDir(name string) ([]string, error) { - node := _bintree - if len(name) != 0 { - canonicalName := strings.Replace(name, "\\", "/", -1) - pathList := strings.Split(canonicalName, "/") - for _, p := range pathList { - node = node.Children[p] - if node == nil { - return nil, fmt.Errorf("Asset %s not found", name) - } - } - } - if node.Func != nil { - return nil, fmt.Errorf("Asset %s not found", name) - } - rv := make([]string, 0, len(node.Children)) - for childName := range node.Children { - rv = append(rv, childName) - } - return rv, nil -} - -type bintree struct { - Func func() (*asset, error) - Children map[string]*bintree -} - -var _bintree = &bintree{nil, map[string]*bintree{ - "enum.tmpl": {enumTmpl, map[string]*bintree{}}, - "enum_string.tmpl": {enum_stringTmpl, map[string]*bintree{}}, -}} - -// RestoreAsset restores an asset under the given directory. -func RestoreAsset(dir, name string) error { - data, err := Asset(name) - if err != nil { - return err - } - info, err := AssetInfo(name) - if err != nil { - return err - } - err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755)) - if err != nil { - return err - } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) - if err != nil { - return err - } - return os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) -} - -// RestoreAssets restores an asset under the given directory recursively. -func RestoreAssets(dir, name string) error { - children, err := AssetDir(name) - // File - if err != nil { - return RestoreAsset(dir, name) - } - // Dir - for _, child := range children { - err = RestoreAssets(dir, filepath.Join(name, child)) - if err != nil { - return err - } - } - return nil -} - -func _filePath(dir, name string) string { - canonicalName := strings.Replace(name, "\\", "/", -1) - return filepath.Join(append([]string{dir}, strings.Split(canonicalName, "/")...)...) -} diff --git a/generator/embedded.go b/generator/embedded.go deleted file mode 100644 index 3f659d9e..00000000 --- a/generator/embedded.go +++ /dev/null @@ -1,17 +0,0 @@ -//go:generate ../bin/go-bindata -nometadata -o assets/assets.go -pkg=assets enum.tmpl enum_string.tmpl -//go:build !go1.16 -// +build !go1.16 - -package generator - -import ( - "text/template" - - "github.com/abice/go-enum/generator/assets" -) - -func (g *Generator) addEmbeddedTemplates() { - for _, asset := range assets.AssetNames() { - g.t = template.Must(g.t.Parse(string(assets.MustAsset(asset)))) - } -} diff --git a/generator/example_test.go b/generator/example_test.go index 4248a31f..c5433d97 100644 --- a/generator/example_test.go +++ b/generator/example_test.go @@ -24,37 +24,45 @@ type Animal int32 // Model x ENUM(Toyota,_,Chevy,_,Ford). type Model int32 -/* ENUM( - Coke - Pepsi - MtnDew +/* + ENUM( + Coke + Pepsi + MtnDew + ). */ type Soda int64 -/* ENUM( - test_lower - Test_capital - anotherLowerCaseStart +/* + ENUM( + test_lower + Test_capital + anotherLowerCaseStart + ) */ type Cases int64 -/* ENUM( - test-Hyphen - -hyphenStart - _underscoreFirst - 0numberFirst - 123456789a - 123123-asdf - ending-hyphen- +/* + ENUM( + test-Hyphen + -hyphenStart + _underscoreFirst + 0numberFirst + 123456789a + 123123-asdf + ending-hyphen- + ) */ type Sanitizing int64 -/* ENUM( - startWithNum=23 - nextNum +/* + ENUM( + startWithNum=23 + nextNum + ) */ type StartNotZero int64 @@ -68,13 +76,15 @@ type StartNotZero int64 // ) type ColorWithComment int -/*ENUM( +/* +ENUM( Black, White, Red Green Blue=33 // Blue starts with 33 grey= yellow -)*/ +) +*/ type ColorWithComment2 int /* ENUM( @@ -103,7 +113,9 @@ Green = 33 // Green starts with 33 // ) type ColorWithComment4 int -/* ENUM( +/* + ENUM( + Unknown= 0 E2P15 = 32768 E2P16 = 65536 diff --git a/generator/generator_test.go b/generator/generator_test.go index f553c5a4..e37a321a 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -108,6 +108,27 @@ func TestNoPrefixExampleFile(t *testing.T) { } } +// TestExampleFile +func TestReplacePrefixExampleFile(t *testing.T) { + g := NewGenerator(). + WithMarshal(). + WithLowercaseVariant(). + WithNoPrefix(). + WithPrefix("MyPrefix_"). + WithFlag(). + WithoutSnakeToCamel() + // Parse the file given in arguments + imported, err := g.GenerateFromFile(testExample) + require.Nil(t, err, "Error generating formatted code") + + outputLines := strings.Split(string(imported), "\n") + cupaloy.SnapshotT(t, outputLines) + + if false { + fmt.Println(string(imported)) + } +} + // TestExampleFile func TestNoPrefixExampleFileWithSnakeToCamel(t *testing.T) { g := NewGenerator(). diff --git a/go.mod b/go.mod index bb65faeb..46dc1c3f 100644 --- a/go.mod +++ b/go.mod @@ -6,16 +6,16 @@ require ( github.com/Masterminds/sprig v2.22.0+incompatible github.com/bradleyjkemp/cupaloy v2.3.0+incompatible github.com/golang/mock v1.6.0 - github.com/kevinburke/go-bindata v3.23.0+incompatible github.com/labstack/gommon v0.3.1 github.com/mattn/goveralls v0.0.11 github.com/pkg/errors v0.9.1 github.com/stretchr/testify v1.8.0 - github.com/urfave/cli/v2 v2.11.1 + github.com/urfave/cli/v2 v2.16.3 golang.org/x/tools v0.1.12 ) require ( + github.com/BurntSushi/toml v1.1.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect @@ -30,7 +30,7 @@ require ( github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/spf13/pflag v1.0.5 + github.com/spf13/pflag v1.0.5 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect diff --git a/go.sum b/go.sum index da3148fa..1c39ab8c 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,4 @@ +github.com/BurntSushi/toml v1.1.0 h1:ksErzDEI1khOiGPgpwuI7x2ebx/uXQNw7xJpn9Eq1+I= github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= @@ -21,8 +22,6 @@ github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= -github.com/kevinburke/go-bindata v3.23.0+incompatible h1:rqNOXZlqrYhMVVAsQx8wuc+LaA73YcfbQ407wAykyS8= -github.com/kevinburke/go-bindata v3.23.0+incompatible/go.mod h1:/pEEZ72flUW2p0yi30bslSp9YqD9pysLxunQDdb2CPM= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= @@ -60,17 +59,15 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/urfave/cli/v2 v2.11.1 h1:UKK6SP7fV3eKOefbS87iT9YHefv7iB/53ih6e+GNAsE= -github.com/urfave/cli/v2 v2.11.1/go.mod h1:f8iq5LtQ/bLxafbdBSLPPNsgaW0l/2fYYEHhAyPlwvo= +github.com/urfave/cli/v2 v2.16.3 h1:gHoFIwpPjoyIMbJp/VFd+/vuD0dAgFK4B6DpEMFJfQk= +github.com/urfave/cli/v2 v2.16.3/go.mod h1:1CNUng3PtjQMtRzJO4FMXBQvkGtuYRxxiR9xMa7jMwI= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e h1:T8NU3HyQ8ClP4SEE+KbFlg6n0NhuTsN4MyznaarGsZM= golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -78,32 +75,22 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVD golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= diff --git a/main.go b/main.go index 83126897..1e10a10a 100644 --- a/main.go +++ b/main.go @@ -93,7 +93,7 @@ func main() { }, &cli.StringFlag{ Name: "prefix", - Usage: "Replaces the prefix with a user one.", + Usage: "Adds a prefix with a user one. If you would like to replace the prefix, then combine this option with --noprefix.", Destination: &argv.Prefix, }, &cli.BoolFlag{ diff --git a/tools.go b/tools.go index 897edddb..ab6b3c69 100644 --- a/tools.go +++ b/tools.go @@ -6,7 +6,6 @@ package main import ( _ "github.com/golang/mock/mockgen" _ "github.com/golang/mock/mockgen/model" - _ "github.com/kevinburke/go-bindata/go-bindata" _ "github.com/mattn/goveralls" _ "golang.org/x/tools/cmd/cover" _ "golang.org/x/tools/cmd/goimports" From 58e3ed8fc2db7b4f9a6552299ffa14a5e1146249 Mon Sep 17 00:00:00 2001 From: Raiven Date: Sun, 25 Sep 2022 00:40:17 +0800 Subject: [PATCH 41/91] rename error from _XXXErrNilPtr to errXXXNilPtr. (#133) Please see https://staticcheck.io/docs/checks#ST1012 --- _example/sql_enum.go | 16 +- _example/sql_int_enum.go | 16 +- _example/sql_str_enum.go | 16 +- _example/strings_only_enum.go | 6 +- .../Test118CustomPrefixExampleFile-1.18 | 16 +- .../Test118CustomPrefixExampleFile-og | 214 +++++++++--------- generator/.snapshots/Test118ExampleFile-1.18 | 16 +- generator/.snapshots/Test118ExampleFile-og | 214 +++++++++--------- .../Test118ExampleFileMoreOptions-1.18 | 16 +- .../Test118ExampleFileMoreOptions-og | 214 +++++++++--------- .../.snapshots/TestCustomPrefixExampleFile | 214 +++++++++--------- generator/.snapshots/TestExampleFile | 214 +++++++++--------- .../.snapshots/TestExampleFileMoreOptions | 214 +++++++++--------- generator/enum.tmpl | 16 +- generator/enum_string.tmpl | 6 +- 15 files changed, 704 insertions(+), 704 deletions(-) diff --git a/_example/sql_enum.go b/_example/sql_enum.go index 9f373649..382d7001 100644 --- a/_example/sql_enum.go +++ b/_example/sql_enum.go @@ -77,7 +77,7 @@ func (x *ProjectStatus) UnmarshalText(text []byte) error { return nil } -var _ProjectStatusErrNilPtr = errors.New("value pointer is nil") // one per type for package clashes +var errProjectStatusNilPtr = errors.New("value pointer is nil") // one per type for package clashes // Scan implements the Scanner interface. func (x *ProjectStatus) Scan(value interface{}) (err error) { @@ -113,7 +113,7 @@ func (x *ProjectStatus) Scan(value interface{}) (err error) { *x = ProjectStatus(v) case *ProjectStatus: if v == nil { - return _ProjectStatusErrNilPtr + return errProjectStatusNilPtr } *x = *v case uint: @@ -122,34 +122,34 @@ func (x *ProjectStatus) Scan(value interface{}) (err error) { *x = ProjectStatus(v) case *int: if v == nil { - return _ProjectStatusErrNilPtr + return errProjectStatusNilPtr } *x = ProjectStatus(*v) case *int64: if v == nil { - return _ProjectStatusErrNilPtr + return errProjectStatusNilPtr } *x = ProjectStatus(*v) case float64: // json marshals everything as a float64 if it's a number *x = ProjectStatus(v) case *float64: // json marshals everything as a float64 if it's a number if v == nil { - return _ProjectStatusErrNilPtr + return errProjectStatusNilPtr } *x = ProjectStatus(*v) case *uint: if v == nil { - return _ProjectStatusErrNilPtr + return errProjectStatusNilPtr } *x = ProjectStatus(*v) case *uint64: if v == nil { - return _ProjectStatusErrNilPtr + return errProjectStatusNilPtr } *x = ProjectStatus(*v) case *string: if v == nil { - return _ProjectStatusErrNilPtr + return errProjectStatusNilPtr } *x, err = ParseProjectStatus(*v) if err != nil { diff --git a/_example/sql_int_enum.go b/_example/sql_int_enum.go index 4d404e24..f40e0c5b 100644 --- a/_example/sql_int_enum.go +++ b/_example/sql_int_enum.go @@ -60,7 +60,7 @@ func ParseImageType(name string) (ImageType, error) { return ImageType(0), fmt.Errorf("%s is not a valid ImageType", name) } -var _ImageTypeErrNilPtr = errors.New("value pointer is nil") // one per type for package clashes +var errImageTypeNilPtr = errors.New("value pointer is nil") // one per type for package clashes // Scan implements the Scanner interface. func (x *ImageType) Scan(value interface{}) (err error) { @@ -96,7 +96,7 @@ func (x *ImageType) Scan(value interface{}) (err error) { *x = ImageType(v) case *ImageType: if v == nil { - return _ImageTypeErrNilPtr + return errImageTypeNilPtr } *x = *v case uint: @@ -105,34 +105,34 @@ func (x *ImageType) Scan(value interface{}) (err error) { *x = ImageType(v) case *int: if v == nil { - return _ImageTypeErrNilPtr + return errImageTypeNilPtr } *x = ImageType(*v) case *int64: if v == nil { - return _ImageTypeErrNilPtr + return errImageTypeNilPtr } *x = ImageType(*v) case float64: // json marshals everything as a float64 if it's a number *x = ImageType(v) case *float64: // json marshals everything as a float64 if it's a number if v == nil { - return _ImageTypeErrNilPtr + return errImageTypeNilPtr } *x = ImageType(*v) case *uint: if v == nil { - return _ImageTypeErrNilPtr + return errImageTypeNilPtr } *x = ImageType(*v) case *uint64: if v == nil { - return _ImageTypeErrNilPtr + return errImageTypeNilPtr } *x = ImageType(*v) case *string: if v == nil { - return _ImageTypeErrNilPtr + return errImageTypeNilPtr } *x, err = ParseImageType(*v) if err != nil { diff --git a/_example/sql_str_enum.go b/_example/sql_str_enum.go index 2184cc07..303642a6 100644 --- a/_example/sql_str_enum.go +++ b/_example/sql_str_enum.go @@ -55,7 +55,7 @@ func ParseJobState(name string) (JobState, error) { return JobState(0), fmt.Errorf("%s is not a valid JobState", name) } -var _JobStateErrNilPtr = errors.New("value pointer is nil") // one per type for package clashes +var errJobStateNilPtr = errors.New("value pointer is nil") // one per type for package clashes // Scan implements the Scanner interface. func (x *JobState) Scan(value interface{}) (err error) { @@ -79,7 +79,7 @@ func (x *JobState) Scan(value interface{}) (err error) { *x = JobState(v) case *JobState: if v == nil { - return _JobStateErrNilPtr + return errJobStateNilPtr } *x = *v case uint: @@ -88,34 +88,34 @@ func (x *JobState) Scan(value interface{}) (err error) { *x = JobState(v) case *int: if v == nil { - return _JobStateErrNilPtr + return errJobStateNilPtr } *x = JobState(*v) case *int64: if v == nil { - return _JobStateErrNilPtr + return errJobStateNilPtr } *x = JobState(*v) case float64: // json marshals everything as a float64 if it's a number *x = JobState(v) case *float64: // json marshals everything as a float64 if it's a number if v == nil { - return _JobStateErrNilPtr + return errJobStateNilPtr } *x = JobState(*v) case *uint: if v == nil { - return _JobStateErrNilPtr + return errJobStateNilPtr } *x = JobState(*v) case *uint64: if v == nil { - return _JobStateErrNilPtr + return errJobStateNilPtr } *x = JobState(*v) case *string: if v == nil { - return _JobStateErrNilPtr + return errJobStateNilPtr } *x, err = ParseJobState(*v) } diff --git a/_example/strings_only_enum.go b/_example/strings_only_enum.go index ebaaa038..82618761 100644 --- a/_example/strings_only_enum.go +++ b/_example/strings_only_enum.go @@ -97,7 +97,7 @@ func (x *StrState) UnmarshalText(text []byte) error { return nil } -var _StrStateErrNilPtr = errors.New("value pointer is nil") // one per type for package clashes +var errStrStateNilPtr = errors.New("value pointer is nil") // one per type for package clashes // Scan implements the Scanner interface. func (x *StrState) Scan(value interface{}) (err error) { @@ -117,12 +117,12 @@ func (x *StrState) Scan(value interface{}) (err error) { *x = v case *StrState: if v == nil { - return _StrStateErrNilPtr + return errStrStateNilPtr } *x = *v case *string: if v == nil { - return _StrStateErrNilPtr + return errStrStateNilPtr } *x, err = ParseStrState(*v) default: diff --git a/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 b/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 index fa47f5ab..8754a636 100644 --- a/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 +++ b/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 @@ -79,7 +79,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=97) "var _ChangeTypeErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=96) "var errChangeTypeNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=58) "func (x *ChangeType) Scan(value interface{}) (err error) {", @@ -115,7 +115,7 @@ (string) (len=20) "\t\t*x = ChangeType(v)", (string) (len=18) "\tcase *ChangeType:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -124,34 +124,34 @@ (string) (len=20) "\t\t*x = ChangeType(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = ChangeType(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = ChangeType(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=20) "\t\t*x = ChangeType(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = ChangeType(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = ChangeType(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = ChangeType(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=31) "\t\t*x, err = ParseChangeType(*v)", (string) (len=17) "\t\tif err != nil {", diff --git a/generator/.snapshots/Test118CustomPrefixExampleFile-og b/generator/.snapshots/Test118CustomPrefixExampleFile-og index 303980bd..52e8e9c5 100644 --- a/generator/.snapshots/Test118CustomPrefixExampleFile-og +++ b/generator/.snapshots/Test118CustomPrefixExampleFile-og @@ -79,7 +79,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=93) "var _AnimalErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=92) "var errAnimalNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=54) "func (x *Animal) Scan(value interface{}) (err error) {", @@ -115,7 +115,7 @@ (string) (len=16) "\t\t*x = Animal(v)", (string) (len=14) "\tcase *Animal:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -124,34 +124,34 @@ (string) (len=16) "\t\t*x = Animal(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=16) "\t\t*x = Animal(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x, err = ParseAnimal(*v)", (string) (len=17) "\t\tif err != nil {", @@ -341,7 +341,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _CasesErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errCasesNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Cases) Scan(value interface{}) (err error) {", @@ -377,7 +377,7 @@ (string) (len=15) "\t\t*x = Cases(v)", (string) (len=13) "\tcase *Cases:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -386,34 +386,34 @@ (string) (len=15) "\t\t*x = Cases(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Cases(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseCases(*v)", (string) (len=17) "\t\tif err != nil {", @@ -623,7 +623,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _ColorErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errColorNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Color) Scan(value interface{}) (err error) {", @@ -659,7 +659,7 @@ (string) (len=15) "\t\t*x = Color(v)", (string) (len=13) "\tcase *Color:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -668,34 +668,34 @@ (string) (len=15) "\t\t*x = Color(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Color(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseColor(*v)", (string) (len=17) "\t\tif err != nil {", @@ -906,7 +906,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=103) "var _ColorWithCommentErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=102) "var errColorWithCommentNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=64) "func (x *ColorWithComment) Scan(value interface{}) (err error) {", @@ -942,7 +942,7 @@ (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=24) "\tcase *ColorWithComment:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -951,34 +951,34 @@ (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=37) "\t\t*x, err = ParseColorWithComment(*v)", (string) (len=17) "\t\tif err != nil {", @@ -1189,7 +1189,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment2ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment2NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment2) Scan(value interface{}) (err error) {", @@ -1225,7 +1225,7 @@ (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=25) "\tcase *ColorWithComment2:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1234,34 +1234,34 @@ (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment2(*v)", (string) (len=17) "\t\tif err != nil {", @@ -1488,7 +1488,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment3ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment3NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment3) Scan(value interface{}) (err error) {", @@ -1524,7 +1524,7 @@ (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=25) "\tcase *ColorWithComment3:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1533,34 +1533,34 @@ (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment3(*v)", (string) (len=17) "\t\tif err != nil {", @@ -1787,7 +1787,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment4ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment4NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment4) Scan(value interface{}) (err error) {", @@ -1823,7 +1823,7 @@ (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=25) "\tcase *ColorWithComment4:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1832,34 +1832,34 @@ (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment4(*v)", (string) (len=17) "\t\tif err != nil {", @@ -2109,7 +2109,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=96) "var _Enum64bitErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=95) "var errEnum64bitNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=57) "func (x *Enum64bit) Scan(value interface{}) (err error) {", @@ -2145,7 +2145,7 @@ (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=17) "\tcase *Enum64bit:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2154,34 +2154,34 @@ (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=30) "\t\t*x, err = ParseEnum64bit(*v)", (string) (len=17) "\t\tif err != nil {", @@ -2375,7 +2375,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _ModelErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errModelNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Model) Scan(value interface{}) (err error) {", @@ -2411,7 +2411,7 @@ (string) (len=15) "\t\t*x = Model(v)", (string) (len=13) "\tcase *Model:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2420,34 +2420,34 @@ (string) (len=15) "\t\t*x = Model(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Model(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseModel(*v)", (string) (len=17) "\t\tif err != nil {", @@ -2637,7 +2637,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=95) "var _NonASCIIErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=94) "var errNonASCIINilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=56) "func (x *NonASCII) Scan(value interface{}) (err error) {", @@ -2673,7 +2673,7 @@ (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=16) "\tcase *NonASCII:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2682,34 +2682,34 @@ (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=29) "\t\t*x, err = ParseNonASCII(*v)", (string) (len=17) "\t\tif err != nil {", @@ -2919,7 +2919,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=97) "var _SanitizingErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=96) "var errSanitizingNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=58) "func (x *Sanitizing) Scan(value interface{}) (err error) {", @@ -2955,7 +2955,7 @@ (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=18) "\tcase *Sanitizing:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2964,34 +2964,34 @@ (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=31) "\t\t*x, err = ParseSanitizing(*v)", (string) (len=17) "\t\tif err != nil {", @@ -3181,7 +3181,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=91) "var _SodaErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=90) "var errSodaNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=52) "func (x *Soda) Scan(value interface{}) (err error) {", @@ -3217,7 +3217,7 @@ (string) (len=14) "\t\t*x = Soda(v)", (string) (len=12) "\tcase *Soda:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -3226,34 +3226,34 @@ (string) (len=14) "\t\t*x = Soda(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=14) "\t\t*x = Soda(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=25) "\t\t*x, err = ParseSoda(*v)", (string) (len=17) "\t\tif err != nil {", @@ -3438,7 +3438,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=99) "var _StartNotZeroErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=98) "var errStartNotZeroNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=60) "func (x *StartNotZero) Scan(value interface{}) (err error) {", @@ -3474,7 +3474,7 @@ (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=20) "\tcase *StartNotZero:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -3483,34 +3483,34 @@ (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=33) "\t\t*x, err = ParseStartNotZero(*v)", (string) (len=17) "\t\tif err != nil {", @@ -3691,7 +3691,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=97) "var _StringEnumErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=96) "var errStringEnumNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=58) "func (x *StringEnum) Scan(value interface{}) (err error) {", @@ -3711,12 +3711,12 @@ (string) (len=8) "\t\t*x = v", (string) (len=18) "\tcase *StringEnum:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", (string) (len=3) "\t\t}", (string) (len=31) "\t\t*x, err = ParseStringEnum(*v)", (string) (len=9) "\tdefault:", diff --git a/generator/.snapshots/Test118ExampleFile-1.18 b/generator/.snapshots/Test118ExampleFile-1.18 index 8974ef8c..d51a06f9 100644 --- a/generator/.snapshots/Test118ExampleFile-1.18 +++ b/generator/.snapshots/Test118ExampleFile-1.18 @@ -90,7 +90,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=97) "var _ChangeTypeErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=96) "var errChangeTypeNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=58) "func (x *ChangeType) Scan(value interface{}) (err error) {", @@ -114,7 +114,7 @@ (string) (len=20) "\t\t*x = ChangeType(v)", (string) (len=18) "\tcase *ChangeType:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -123,34 +123,34 @@ (string) (len=20) "\t\t*x = ChangeType(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = ChangeType(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = ChangeType(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=20) "\t\t*x = ChangeType(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = ChangeType(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = ChangeType(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = ChangeType(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=31) "\t\t*x, err = ParseChangeType(*v)", (string) (len=2) "\t}", diff --git a/generator/.snapshots/Test118ExampleFile-og b/generator/.snapshots/Test118ExampleFile-og index 5cc24931..19817428 100644 --- a/generator/.snapshots/Test118ExampleFile-og +++ b/generator/.snapshots/Test118ExampleFile-og @@ -90,7 +90,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=93) "var _AnimalErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=92) "var errAnimalNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=54) "func (x *Animal) Scan(value interface{}) (err error) {", @@ -114,7 +114,7 @@ (string) (len=16) "\t\t*x = Animal(v)", (string) (len=14) "\tcase *Animal:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -123,34 +123,34 @@ (string) (len=16) "\t\t*x = Animal(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=16) "\t\t*x = Animal(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x, err = ParseAnimal(*v)", (string) (len=2) "\t}", @@ -238,7 +238,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _CasesErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errCasesNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Cases) Scan(value interface{}) (err error) {", @@ -262,7 +262,7 @@ (string) (len=15) "\t\t*x = Cases(v)", (string) (len=13) "\tcase *Cases:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -271,34 +271,34 @@ (string) (len=15) "\t\t*x = Cases(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Cases(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseCases(*v)", (string) (len=2) "\t}", @@ -410,7 +410,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _ColorErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errColorNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Color) Scan(value interface{}) (err error) {", @@ -434,7 +434,7 @@ (string) (len=15) "\t\t*x = Color(v)", (string) (len=13) "\tcase *Color:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -443,34 +443,34 @@ (string) (len=15) "\t\t*x = Color(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Color(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseColor(*v)", (string) (len=2) "\t}", @@ -583,7 +583,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=103) "var _ColorWithCommentErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=102) "var errColorWithCommentNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=64) "func (x *ColorWithComment) Scan(value interface{}) (err error) {", @@ -607,7 +607,7 @@ (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=24) "\tcase *ColorWithComment:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -616,34 +616,34 @@ (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=37) "\t\t*x, err = ParseColorWithComment(*v)", (string) (len=2) "\t}", @@ -756,7 +756,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment2ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment2NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment2) Scan(value interface{}) (err error) {", @@ -780,7 +780,7 @@ (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=25) "\tcase *ColorWithComment2:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -789,34 +789,34 @@ (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment2(*v)", (string) (len=2) "\t}", @@ -948,7 +948,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment3ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment3NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment3) Scan(value interface{}) (err error) {", @@ -972,7 +972,7 @@ (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=25) "\tcase *ColorWithComment3:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -981,34 +981,34 @@ (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment3(*v)", (string) (len=2) "\t}", @@ -1139,7 +1139,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment4ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment4NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment4) Scan(value interface{}) (err error) {", @@ -1163,7 +1163,7 @@ (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=25) "\tcase *ColorWithComment4:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1172,34 +1172,34 @@ (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment4(*v)", (string) (len=2) "\t}", @@ -1359,7 +1359,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=96) "var _Enum64bitErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=95) "var errEnum64bitNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=57) "func (x *Enum64bit) Scan(value interface{}) (err error) {", @@ -1383,7 +1383,7 @@ (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=17) "\tcase *Enum64bit:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1392,34 +1392,34 @@ (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=30) "\t\t*x, err = ParseEnum64bit(*v)", (string) (len=2) "\t}", @@ -1511,7 +1511,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _ModelErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errModelNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Model) Scan(value interface{}) (err error) {", @@ -1535,7 +1535,7 @@ (string) (len=15) "\t\t*x = Model(v)", (string) (len=13) "\tcase *Model:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1544,34 +1544,34 @@ (string) (len=15) "\t\t*x = Model(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Model(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseModel(*v)", (string) (len=2) "\t}", @@ -1659,7 +1659,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=95) "var _NonASCIIErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=94) "var errNonASCIINilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=56) "func (x *NonASCII) Scan(value interface{}) (err error) {", @@ -1683,7 +1683,7 @@ (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=16) "\tcase *NonASCII:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1692,34 +1692,34 @@ (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=29) "\t\t*x, err = ParseNonASCII(*v)", (string) (len=2) "\t}", @@ -1831,7 +1831,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=97) "var _SanitizingErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=96) "var errSanitizingNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=58) "func (x *Sanitizing) Scan(value interface{}) (err error) {", @@ -1855,7 +1855,7 @@ (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=18) "\tcase *Sanitizing:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1864,34 +1864,34 @@ (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=31) "\t\t*x, err = ParseSanitizing(*v)", (string) (len=2) "\t}", @@ -1979,7 +1979,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=91) "var _SodaErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=90) "var errSodaNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=52) "func (x *Soda) Scan(value interface{}) (err error) {", @@ -2003,7 +2003,7 @@ (string) (len=14) "\t\t*x = Soda(v)", (string) (len=12) "\tcase *Soda:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2012,34 +2012,34 @@ (string) (len=14) "\t\t*x = Soda(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=14) "\t\t*x = Soda(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=25) "\t\t*x, err = ParseSoda(*v)", (string) (len=2) "\t}", @@ -2121,7 +2121,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=99) "var _StartNotZeroErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=98) "var errStartNotZeroNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=60) "func (x *StartNotZero) Scan(value interface{}) (err error) {", @@ -2145,7 +2145,7 @@ (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=20) "\tcase *StartNotZero:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2154,34 +2154,34 @@ (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=33) "\t\t*x, err = ParseStartNotZero(*v)", (string) (len=2) "\t}", @@ -2260,7 +2260,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=97) "var _StringEnumErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=96) "var errStringEnumNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=58) "func (x *StringEnum) Scan(value interface{}) (err error) {", @@ -2280,12 +2280,12 @@ (string) (len=8) "\t\t*x = v", (string) (len=18) "\tcase *StringEnum:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", (string) (len=3) "\t\t}", (string) (len=31) "\t\t*x, err = ParseStringEnum(*v)", (string) (len=9) "\tdefault:", diff --git a/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 b/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 index b55dfa15..a7fc6280 100644 --- a/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 +++ b/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 @@ -99,7 +99,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=97) "var _ChangeTypeErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=96) "var errChangeTypeNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=58) "func (x *ChangeType) Scan(value interface{}) (err error) {", @@ -123,7 +123,7 @@ (string) (len=20) "\t\t*x = ChangeType(v)", (string) (len=18) "\tcase *ChangeType:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -132,34 +132,34 @@ (string) (len=20) "\t\t*x = ChangeType(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = ChangeType(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = ChangeType(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=20) "\t\t*x = ChangeType(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = ChangeType(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = ChangeType(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = ChangeType(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _ChangeTypeErrNilPtr", + (string) (len=29) "\t\t\treturn errChangeTypeNilPtr", (string) (len=3) "\t\t}", (string) (len=31) "\t\t*x, err = ParseChangeType(*v)", (string) (len=2) "\t}", diff --git a/generator/.snapshots/Test118ExampleFileMoreOptions-og b/generator/.snapshots/Test118ExampleFileMoreOptions-og index 21475684..4959baff 100644 --- a/generator/.snapshots/Test118ExampleFileMoreOptions-og +++ b/generator/.snapshots/Test118ExampleFileMoreOptions-og @@ -99,7 +99,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=93) "var _AnimalErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=92) "var errAnimalNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=54) "func (x *Animal) Scan(value interface{}) (err error) {", @@ -123,7 +123,7 @@ (string) (len=16) "\t\t*x = Animal(v)", (string) (len=14) "\tcase *Animal:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -132,34 +132,34 @@ (string) (len=16) "\t\t*x = Animal(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=16) "\t\t*x = Animal(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x, err = ParseAnimal(*v)", (string) (len=2) "\t}", @@ -261,7 +261,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _CasesErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errCasesNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Cases) Scan(value interface{}) (err error) {", @@ -285,7 +285,7 @@ (string) (len=15) "\t\t*x = Cases(v)", (string) (len=13) "\tcase *Cases:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -294,34 +294,34 @@ (string) (len=15) "\t\t*x = Cases(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Cases(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseCases(*v)", (string) (len=2) "\t}", @@ -447,7 +447,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _ColorErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errColorNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Color) Scan(value interface{}) (err error) {", @@ -471,7 +471,7 @@ (string) (len=15) "\t\t*x = Color(v)", (string) (len=13) "\tcase *Color:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -480,34 +480,34 @@ (string) (len=15) "\t\t*x = Color(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Color(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseColor(*v)", (string) (len=2) "\t}", @@ -634,7 +634,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=103) "var _ColorWithCommentErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=102) "var errColorWithCommentNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=64) "func (x *ColorWithComment) Scan(value interface{}) (err error) {", @@ -658,7 +658,7 @@ (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=24) "\tcase *ColorWithComment:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -667,34 +667,34 @@ (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=37) "\t\t*x, err = ParseColorWithComment(*v)", (string) (len=2) "\t}", @@ -821,7 +821,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment2ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment2NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment2) Scan(value interface{}) (err error) {", @@ -845,7 +845,7 @@ (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=25) "\tcase *ColorWithComment2:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -854,34 +854,34 @@ (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment2(*v)", (string) (len=2) "\t}", @@ -1027,7 +1027,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment3ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment3NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment3) Scan(value interface{}) (err error) {", @@ -1051,7 +1051,7 @@ (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=25) "\tcase *ColorWithComment3:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1060,34 +1060,34 @@ (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment3(*v)", (string) (len=2) "\t}", @@ -1232,7 +1232,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment4ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment4NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment4) Scan(value interface{}) (err error) {", @@ -1256,7 +1256,7 @@ (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=25) "\tcase *ColorWithComment4:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1265,34 +1265,34 @@ (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment4(*v)", (string) (len=2) "\t}", @@ -1466,7 +1466,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=96) "var _Enum64bitErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=95) "var errEnum64bitNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=57) "func (x *Enum64bit) Scan(value interface{}) (err error) {", @@ -1490,7 +1490,7 @@ (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=17) "\tcase *Enum64bit:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1499,34 +1499,34 @@ (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=30) "\t\t*x, err = ParseEnum64bit(*v)", (string) (len=2) "\t}", @@ -1632,7 +1632,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _ModelErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errModelNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Model) Scan(value interface{}) (err error) {", @@ -1656,7 +1656,7 @@ (string) (len=15) "\t\t*x = Model(v)", (string) (len=13) "\tcase *Model:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1665,34 +1665,34 @@ (string) (len=15) "\t\t*x = Model(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Model(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseModel(*v)", (string) (len=2) "\t}", @@ -1794,7 +1794,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=95) "var _NonASCIIErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=94) "var errNonASCIINilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=56) "func (x *NonASCII) Scan(value interface{}) (err error) {", @@ -1818,7 +1818,7 @@ (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=16) "\tcase *NonASCII:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1827,34 +1827,34 @@ (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=29) "\t\t*x, err = ParseNonASCII(*v)", (string) (len=2) "\t}", @@ -1980,7 +1980,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=97) "var _SanitizingErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=96) "var errSanitizingNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=58) "func (x *Sanitizing) Scan(value interface{}) (err error) {", @@ -2004,7 +2004,7 @@ (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=18) "\tcase *Sanitizing:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2013,34 +2013,34 @@ (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=31) "\t\t*x, err = ParseSanitizing(*v)", (string) (len=2) "\t}", @@ -2142,7 +2142,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=91) "var _SodaErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=90) "var errSodaNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=52) "func (x *Soda) Scan(value interface{}) (err error) {", @@ -2166,7 +2166,7 @@ (string) (len=14) "\t\t*x = Soda(v)", (string) (len=12) "\tcase *Soda:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2175,34 +2175,34 @@ (string) (len=14) "\t\t*x = Soda(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=14) "\t\t*x = Soda(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=25) "\t\t*x, err = ParseSoda(*v)", (string) (len=2) "\t}", @@ -2298,7 +2298,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=99) "var _StartNotZeroErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=98) "var errStartNotZeroNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=60) "func (x *StartNotZero) Scan(value interface{}) (err error) {", @@ -2322,7 +2322,7 @@ (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=20) "\tcase *StartNotZero:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2331,34 +2331,34 @@ (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=33) "\t\t*x, err = ParseStartNotZero(*v)", (string) (len=2) "\t}", @@ -2451,7 +2451,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=97) "var _StringEnumErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=96) "var errStringEnumNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=58) "func (x *StringEnum) Scan(value interface{}) (err error) {", @@ -2471,12 +2471,12 @@ (string) (len=8) "\t\t*x = v", (string) (len=18) "\tcase *StringEnum:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", (string) (len=3) "\t\t}", (string) (len=31) "\t\t*x, err = ParseStringEnum(*v)", (string) (len=9) "\tdefault:", diff --git a/generator/.snapshots/TestCustomPrefixExampleFile b/generator/.snapshots/TestCustomPrefixExampleFile index 303980bd..52e8e9c5 100644 --- a/generator/.snapshots/TestCustomPrefixExampleFile +++ b/generator/.snapshots/TestCustomPrefixExampleFile @@ -79,7 +79,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=93) "var _AnimalErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=92) "var errAnimalNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=54) "func (x *Animal) Scan(value interface{}) (err error) {", @@ -115,7 +115,7 @@ (string) (len=16) "\t\t*x = Animal(v)", (string) (len=14) "\tcase *Animal:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -124,34 +124,34 @@ (string) (len=16) "\t\t*x = Animal(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=16) "\t\t*x = Animal(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x, err = ParseAnimal(*v)", (string) (len=17) "\t\tif err != nil {", @@ -341,7 +341,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _CasesErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errCasesNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Cases) Scan(value interface{}) (err error) {", @@ -377,7 +377,7 @@ (string) (len=15) "\t\t*x = Cases(v)", (string) (len=13) "\tcase *Cases:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -386,34 +386,34 @@ (string) (len=15) "\t\t*x = Cases(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Cases(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseCases(*v)", (string) (len=17) "\t\tif err != nil {", @@ -623,7 +623,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _ColorErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errColorNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Color) Scan(value interface{}) (err error) {", @@ -659,7 +659,7 @@ (string) (len=15) "\t\t*x = Color(v)", (string) (len=13) "\tcase *Color:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -668,34 +668,34 @@ (string) (len=15) "\t\t*x = Color(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Color(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseColor(*v)", (string) (len=17) "\t\tif err != nil {", @@ -906,7 +906,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=103) "var _ColorWithCommentErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=102) "var errColorWithCommentNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=64) "func (x *ColorWithComment) Scan(value interface{}) (err error) {", @@ -942,7 +942,7 @@ (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=24) "\tcase *ColorWithComment:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -951,34 +951,34 @@ (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=37) "\t\t*x, err = ParseColorWithComment(*v)", (string) (len=17) "\t\tif err != nil {", @@ -1189,7 +1189,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment2ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment2NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment2) Scan(value interface{}) (err error) {", @@ -1225,7 +1225,7 @@ (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=25) "\tcase *ColorWithComment2:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1234,34 +1234,34 @@ (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment2(*v)", (string) (len=17) "\t\tif err != nil {", @@ -1488,7 +1488,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment3ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment3NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment3) Scan(value interface{}) (err error) {", @@ -1524,7 +1524,7 @@ (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=25) "\tcase *ColorWithComment3:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1533,34 +1533,34 @@ (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment3(*v)", (string) (len=17) "\t\tif err != nil {", @@ -1787,7 +1787,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment4ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment4NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment4) Scan(value interface{}) (err error) {", @@ -1823,7 +1823,7 @@ (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=25) "\tcase *ColorWithComment4:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1832,34 +1832,34 @@ (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment4(*v)", (string) (len=17) "\t\tif err != nil {", @@ -2109,7 +2109,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=96) "var _Enum64bitErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=95) "var errEnum64bitNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=57) "func (x *Enum64bit) Scan(value interface{}) (err error) {", @@ -2145,7 +2145,7 @@ (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=17) "\tcase *Enum64bit:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2154,34 +2154,34 @@ (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=30) "\t\t*x, err = ParseEnum64bit(*v)", (string) (len=17) "\t\tif err != nil {", @@ -2375,7 +2375,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _ModelErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errModelNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Model) Scan(value interface{}) (err error) {", @@ -2411,7 +2411,7 @@ (string) (len=15) "\t\t*x = Model(v)", (string) (len=13) "\tcase *Model:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2420,34 +2420,34 @@ (string) (len=15) "\t\t*x = Model(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Model(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseModel(*v)", (string) (len=17) "\t\tif err != nil {", @@ -2637,7 +2637,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=95) "var _NonASCIIErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=94) "var errNonASCIINilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=56) "func (x *NonASCII) Scan(value interface{}) (err error) {", @@ -2673,7 +2673,7 @@ (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=16) "\tcase *NonASCII:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2682,34 +2682,34 @@ (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=29) "\t\t*x, err = ParseNonASCII(*v)", (string) (len=17) "\t\tif err != nil {", @@ -2919,7 +2919,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=97) "var _SanitizingErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=96) "var errSanitizingNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=58) "func (x *Sanitizing) Scan(value interface{}) (err error) {", @@ -2955,7 +2955,7 @@ (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=18) "\tcase *Sanitizing:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2964,34 +2964,34 @@ (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=31) "\t\t*x, err = ParseSanitizing(*v)", (string) (len=17) "\t\tif err != nil {", @@ -3181,7 +3181,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=91) "var _SodaErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=90) "var errSodaNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=52) "func (x *Soda) Scan(value interface{}) (err error) {", @@ -3217,7 +3217,7 @@ (string) (len=14) "\t\t*x = Soda(v)", (string) (len=12) "\tcase *Soda:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -3226,34 +3226,34 @@ (string) (len=14) "\t\t*x = Soda(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=14) "\t\t*x = Soda(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=25) "\t\t*x, err = ParseSoda(*v)", (string) (len=17) "\t\tif err != nil {", @@ -3438,7 +3438,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=99) "var _StartNotZeroErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=98) "var errStartNotZeroNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=60) "func (x *StartNotZero) Scan(value interface{}) (err error) {", @@ -3474,7 +3474,7 @@ (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=20) "\tcase *StartNotZero:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -3483,34 +3483,34 @@ (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=33) "\t\t*x, err = ParseStartNotZero(*v)", (string) (len=17) "\t\tif err != nil {", @@ -3691,7 +3691,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=97) "var _StringEnumErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=96) "var errStringEnumNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=58) "func (x *StringEnum) Scan(value interface{}) (err error) {", @@ -3711,12 +3711,12 @@ (string) (len=8) "\t\t*x = v", (string) (len=18) "\tcase *StringEnum:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", (string) (len=3) "\t\t}", (string) (len=31) "\t\t*x, err = ParseStringEnum(*v)", (string) (len=9) "\tdefault:", diff --git a/generator/.snapshots/TestExampleFile b/generator/.snapshots/TestExampleFile index 5cc24931..19817428 100644 --- a/generator/.snapshots/TestExampleFile +++ b/generator/.snapshots/TestExampleFile @@ -90,7 +90,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=93) "var _AnimalErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=92) "var errAnimalNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=54) "func (x *Animal) Scan(value interface{}) (err error) {", @@ -114,7 +114,7 @@ (string) (len=16) "\t\t*x = Animal(v)", (string) (len=14) "\tcase *Animal:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -123,34 +123,34 @@ (string) (len=16) "\t\t*x = Animal(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=16) "\t\t*x = Animal(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x, err = ParseAnimal(*v)", (string) (len=2) "\t}", @@ -238,7 +238,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _CasesErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errCasesNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Cases) Scan(value interface{}) (err error) {", @@ -262,7 +262,7 @@ (string) (len=15) "\t\t*x = Cases(v)", (string) (len=13) "\tcase *Cases:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -271,34 +271,34 @@ (string) (len=15) "\t\t*x = Cases(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Cases(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseCases(*v)", (string) (len=2) "\t}", @@ -410,7 +410,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _ColorErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errColorNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Color) Scan(value interface{}) (err error) {", @@ -434,7 +434,7 @@ (string) (len=15) "\t\t*x = Color(v)", (string) (len=13) "\tcase *Color:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -443,34 +443,34 @@ (string) (len=15) "\t\t*x = Color(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Color(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseColor(*v)", (string) (len=2) "\t}", @@ -583,7 +583,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=103) "var _ColorWithCommentErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=102) "var errColorWithCommentNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=64) "func (x *ColorWithComment) Scan(value interface{}) (err error) {", @@ -607,7 +607,7 @@ (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=24) "\tcase *ColorWithComment:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -616,34 +616,34 @@ (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=37) "\t\t*x, err = ParseColorWithComment(*v)", (string) (len=2) "\t}", @@ -756,7 +756,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment2ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment2NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment2) Scan(value interface{}) (err error) {", @@ -780,7 +780,7 @@ (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=25) "\tcase *ColorWithComment2:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -789,34 +789,34 @@ (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment2(*v)", (string) (len=2) "\t}", @@ -948,7 +948,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment3ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment3NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment3) Scan(value interface{}) (err error) {", @@ -972,7 +972,7 @@ (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=25) "\tcase *ColorWithComment3:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -981,34 +981,34 @@ (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment3(*v)", (string) (len=2) "\t}", @@ -1139,7 +1139,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment4ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment4NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment4) Scan(value interface{}) (err error) {", @@ -1163,7 +1163,7 @@ (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=25) "\tcase *ColorWithComment4:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1172,34 +1172,34 @@ (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment4(*v)", (string) (len=2) "\t}", @@ -1359,7 +1359,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=96) "var _Enum64bitErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=95) "var errEnum64bitNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=57) "func (x *Enum64bit) Scan(value interface{}) (err error) {", @@ -1383,7 +1383,7 @@ (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=17) "\tcase *Enum64bit:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1392,34 +1392,34 @@ (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=30) "\t\t*x, err = ParseEnum64bit(*v)", (string) (len=2) "\t}", @@ -1511,7 +1511,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _ModelErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errModelNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Model) Scan(value interface{}) (err error) {", @@ -1535,7 +1535,7 @@ (string) (len=15) "\t\t*x = Model(v)", (string) (len=13) "\tcase *Model:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1544,34 +1544,34 @@ (string) (len=15) "\t\t*x = Model(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Model(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseModel(*v)", (string) (len=2) "\t}", @@ -1659,7 +1659,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=95) "var _NonASCIIErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=94) "var errNonASCIINilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=56) "func (x *NonASCII) Scan(value interface{}) (err error) {", @@ -1683,7 +1683,7 @@ (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=16) "\tcase *NonASCII:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1692,34 +1692,34 @@ (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=29) "\t\t*x, err = ParseNonASCII(*v)", (string) (len=2) "\t}", @@ -1831,7 +1831,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=97) "var _SanitizingErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=96) "var errSanitizingNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=58) "func (x *Sanitizing) Scan(value interface{}) (err error) {", @@ -1855,7 +1855,7 @@ (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=18) "\tcase *Sanitizing:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1864,34 +1864,34 @@ (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=31) "\t\t*x, err = ParseSanitizing(*v)", (string) (len=2) "\t}", @@ -1979,7 +1979,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=91) "var _SodaErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=90) "var errSodaNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=52) "func (x *Soda) Scan(value interface{}) (err error) {", @@ -2003,7 +2003,7 @@ (string) (len=14) "\t\t*x = Soda(v)", (string) (len=12) "\tcase *Soda:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2012,34 +2012,34 @@ (string) (len=14) "\t\t*x = Soda(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=14) "\t\t*x = Soda(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=25) "\t\t*x, err = ParseSoda(*v)", (string) (len=2) "\t}", @@ -2121,7 +2121,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=99) "var _StartNotZeroErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=98) "var errStartNotZeroNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=60) "func (x *StartNotZero) Scan(value interface{}) (err error) {", @@ -2145,7 +2145,7 @@ (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=20) "\tcase *StartNotZero:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2154,34 +2154,34 @@ (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=33) "\t\t*x, err = ParseStartNotZero(*v)", (string) (len=2) "\t}", @@ -2260,7 +2260,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=97) "var _StringEnumErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=96) "var errStringEnumNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=58) "func (x *StringEnum) Scan(value interface{}) (err error) {", @@ -2280,12 +2280,12 @@ (string) (len=8) "\t\t*x = v", (string) (len=18) "\tcase *StringEnum:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", (string) (len=3) "\t\t}", (string) (len=31) "\t\t*x, err = ParseStringEnum(*v)", (string) (len=9) "\tdefault:", diff --git a/generator/.snapshots/TestExampleFileMoreOptions b/generator/.snapshots/TestExampleFileMoreOptions index 21475684..4959baff 100644 --- a/generator/.snapshots/TestExampleFileMoreOptions +++ b/generator/.snapshots/TestExampleFileMoreOptions @@ -99,7 +99,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=93) "var _AnimalErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=92) "var errAnimalNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=54) "func (x *Animal) Scan(value interface{}) (err error) {", @@ -123,7 +123,7 @@ (string) (len=16) "\t\t*x = Animal(v)", (string) (len=14) "\tcase *Animal:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -132,34 +132,34 @@ (string) (len=16) "\t\t*x = Animal(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=16) "\t\t*x = Animal(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=17) "\t\t*x = Animal(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=26) "\t\t\treturn _AnimalErrNilPtr", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x, err = ParseAnimal(*v)", (string) (len=2) "\t}", @@ -261,7 +261,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _CasesErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errCasesNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Cases) Scan(value interface{}) (err error) {", @@ -285,7 +285,7 @@ (string) (len=15) "\t\t*x = Cases(v)", (string) (len=13) "\tcase *Cases:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -294,34 +294,34 @@ (string) (len=15) "\t\t*x = Cases(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Cases(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Cases(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _CasesErrNilPtr", + (string) (len=24) "\t\t\treturn errCasesNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseCases(*v)", (string) (len=2) "\t}", @@ -447,7 +447,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _ColorErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errColorNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Color) Scan(value interface{}) (err error) {", @@ -471,7 +471,7 @@ (string) (len=15) "\t\t*x = Color(v)", (string) (len=13) "\tcase *Color:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -480,34 +480,34 @@ (string) (len=15) "\t\t*x = Color(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Color(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Color(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ColorErrNilPtr", + (string) (len=24) "\t\t\treturn errColorNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseColor(*v)", (string) (len=2) "\t}", @@ -634,7 +634,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=103) "var _ColorWithCommentErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=102) "var errColorWithCommentNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=64) "func (x *ColorWithComment) Scan(value interface{}) (err error) {", @@ -658,7 +658,7 @@ (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=24) "\tcase *ColorWithComment:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -667,34 +667,34 @@ (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=26) "\t\t*x = ColorWithComment(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=27) "\t\t*x = ColorWithComment(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=36) "\t\t\treturn _ColorWithCommentErrNilPtr", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", (string) (len=3) "\t\t}", (string) (len=37) "\t\t*x, err = ParseColorWithComment(*v)", (string) (len=2) "\t}", @@ -821,7 +821,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment2ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment2NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment2) Scan(value interface{}) (err error) {", @@ -845,7 +845,7 @@ (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=25) "\tcase *ColorWithComment2:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -854,34 +854,34 @@ (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment2(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment2(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment2ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment2(*v)", (string) (len=2) "\t}", @@ -1027,7 +1027,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment3ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment3NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment3) Scan(value interface{}) (err error) {", @@ -1051,7 +1051,7 @@ (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=25) "\tcase *ColorWithComment3:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1060,34 +1060,34 @@ (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment3(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment3(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment3ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment3(*v)", (string) (len=2) "\t}", @@ -1232,7 +1232,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=104) "var _ColorWithComment4ErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=103) "var errColorWithComment4NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=65) "func (x *ColorWithComment4) Scan(value interface{}) (err error) {", @@ -1256,7 +1256,7 @@ (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=25) "\tcase *ColorWithComment4:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1265,34 +1265,34 @@ (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=27) "\t\t*x = ColorWithComment4(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=28) "\t\t*x = ColorWithComment4(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=37) "\t\t\treturn _ColorWithComment4ErrNilPtr", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", (string) (len=3) "\t\t}", (string) (len=38) "\t\t*x, err = ParseColorWithComment4(*v)", (string) (len=2) "\t}", @@ -1466,7 +1466,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=96) "var _Enum64bitErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=95) "var errEnum64bitNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=57) "func (x *Enum64bit) Scan(value interface{}) (err error) {", @@ -1490,7 +1490,7 @@ (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=17) "\tcase *Enum64bit:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1499,34 +1499,34 @@ (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=19) "\t\t*x = Enum64bit(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=20) "\t\t*x = Enum64bit(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=29) "\t\t\treturn _Enum64bitErrNilPtr", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", (string) (len=3) "\t\t}", (string) (len=30) "\t\t*x, err = ParseEnum64bit(*v)", (string) (len=2) "\t}", @@ -1632,7 +1632,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=92) "var _ModelErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=91) "var errModelNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=53) "func (x *Model) Scan(value interface{}) (err error) {", @@ -1656,7 +1656,7 @@ (string) (len=15) "\t\t*x = Model(v)", (string) (len=13) "\tcase *Model:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1665,34 +1665,34 @@ (string) (len=15) "\t\t*x = Model(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\t*x = Model(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=16) "\t\t*x = Model(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=25) "\t\t\treturn _ModelErrNilPtr", + (string) (len=24) "\t\t\treturn errModelNilPtr", (string) (len=3) "\t\t}", (string) (len=26) "\t\t*x, err = ParseModel(*v)", (string) (len=2) "\t}", @@ -1794,7 +1794,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=95) "var _NonASCIIErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=94) "var errNonASCIINilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=56) "func (x *NonASCII) Scan(value interface{}) (err error) {", @@ -1818,7 +1818,7 @@ (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=16) "\tcase *NonASCII:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -1827,34 +1827,34 @@ (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=18) "\t\t*x = NonASCII(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=19) "\t\t*x = NonASCII(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", (string) (len=3) "\t\t}", (string) (len=29) "\t\t*x, err = ParseNonASCII(*v)", (string) (len=2) "\t}", @@ -1980,7 +1980,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=97) "var _SanitizingErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=96) "var errSanitizingNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=58) "func (x *Sanitizing) Scan(value interface{}) (err error) {", @@ -2004,7 +2004,7 @@ (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=18) "\tcase *Sanitizing:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2013,34 +2013,34 @@ (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=20) "\t\t*x = Sanitizing(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=21) "\t\t*x = Sanitizing(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _SanitizingErrNilPtr", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", (string) (len=3) "\t\t}", (string) (len=31) "\t\t*x, err = ParseSanitizing(*v)", (string) (len=2) "\t}", @@ -2142,7 +2142,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=91) "var _SodaErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=90) "var errSodaNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=52) "func (x *Soda) Scan(value interface{}) (err error) {", @@ -2166,7 +2166,7 @@ (string) (len=14) "\t\t*x = Soda(v)", (string) (len=12) "\tcase *Soda:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2175,34 +2175,34 @@ (string) (len=14) "\t\t*x = Soda(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=14) "\t\t*x = Soda(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=15) "\t\t*x = Soda(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=24) "\t\t\treturn _SodaErrNilPtr", + (string) (len=23) "\t\t\treturn errSodaNilPtr", (string) (len=3) "\t\t}", (string) (len=25) "\t\t*x, err = ParseSoda(*v)", (string) (len=2) "\t}", @@ -2298,7 +2298,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=99) "var _StartNotZeroErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=98) "var errStartNotZeroNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=60) "func (x *StartNotZero) Scan(value interface{}) (err error) {", @@ -2322,7 +2322,7 @@ (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=20) "\tcase *StartNotZero:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=11) "\tcase uint:", @@ -2331,34 +2331,34 @@ (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=11) "\tcase *int:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=13) "\tcase *int64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", (string) (len=22) "\t\t*x = StartNotZero(v)", (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=12) "\tcase *uint:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=14) "\tcase *uint64:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=23) "\t\t*x = StartNotZero(*v)", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=32) "\t\t\treturn _StartNotZeroErrNilPtr", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", (string) (len=3) "\t\t}", (string) (len=33) "\t\t*x, err = ParseStartNotZero(*v)", (string) (len=2) "\t}", @@ -2451,7 +2451,7 @@ (string) (len=11) "\treturn nil", (string) (len=1) "}", (string) "", - (string) (len=97) "var _StringEnumErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) (len=96) "var errStringEnumNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", (string) "", (string) (len=41) "// Scan implements the Scanner interface.", (string) (len=58) "func (x *StringEnum) Scan(value interface{}) (err error) {", @@ -2471,12 +2471,12 @@ (string) (len=8) "\t\t*x = v", (string) (len=18) "\tcase *StringEnum:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", (string) (len=3) "\t\t}", (string) (len=9) "\t\t*x = *v", (string) (len=14) "\tcase *string:", (string) (len=15) "\t\tif v == nil {", - (string) (len=30) "\t\t\treturn _StringEnumErrNilPtr", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", (string) (len=3) "\t\t}", (string) (len=31) "\t\t*x, err = ParseStringEnum(*v)", (string) (len=9) "\tdefault:", diff --git a/generator/enum.tmpl b/generator/enum.tmpl index 07ace7ab..46292769 100644 --- a/generator/enum.tmpl +++ b/generator/enum.tmpl @@ -93,7 +93,7 @@ func (x *{{.enum.Name}}) UnmarshalText(text []byte) error { {{end}} {{ if or .sql .sqlnullint .sqlnullstr}} -var _{{.enum.Name}}ErrNilPtr = errors.New("value pointer is nil") // one per type for package clashes +var err{{.enum.Name}}NilPtr = errors.New("value pointer is nil") // one per type for package clashes // Scan implements the Scanner interface. func (x *{{.enum.Name}}) Scan(value interface{}) (err error) { @@ -129,7 +129,7 @@ func (x *{{.enum.Name}}) Scan(value interface{}) (err error) { *x = {{.enum.Name}}(v) case *{{.enum.Name}}: if v == nil{ - return _{{.enum.Name}}ErrNilPtr + return err{{.enum.Name}}NilPtr } *x = *v case uint: @@ -138,34 +138,34 @@ func (x *{{.enum.Name}}) Scan(value interface{}) (err error) { *x = {{.enum.Name}}(v) case *int: if v == nil{ - return _{{.enum.Name}}ErrNilPtr + return err{{.enum.Name}}NilPtr } *x = {{.enum.Name}}(*v) case *int64: if v == nil{ - return _{{.enum.Name}}ErrNilPtr + return err{{.enum.Name}}NilPtr } *x = {{.enum.Name}}(*v) case float64: // json marshals everything as a float64 if it's a number *x = {{.enum.Name}}(v) case *float64: // json marshals everything as a float64 if it's a number if v == nil{ - return _{{.enum.Name}}ErrNilPtr + return err{{.enum.Name}}NilPtr } *x = {{.enum.Name}}(*v) case *uint: if v == nil{ - return _{{.enum.Name}}ErrNilPtr + return err{{.enum.Name}}NilPtr } *x = {{.enum.Name}}(*v) case *uint64: if v == nil{ - return _{{.enum.Name}}ErrNilPtr + return err{{.enum.Name}}NilPtr } *x = {{.enum.Name}}(*v) case *string: if v == nil{ - return _{{.enum.Name}}ErrNilPtr + return err{{.enum.Name}}NilPtr } *x, err = Parse{{.enum.Name}}(*v){{if .sqlnullint }} if err != nil { diff --git a/generator/enum_string.tmpl b/generator/enum_string.tmpl index b53218c3..65f4d327 100644 --- a/generator/enum_string.tmpl +++ b/generator/enum_string.tmpl @@ -86,7 +86,7 @@ func (x *{{.enum.Name}}) UnmarshalText(text []byte) error { {{end}} {{ if or .sql .sqlnullint .sqlnullstr}} -var _{{.enum.Name}}ErrNilPtr = errors.New("value pointer is nil") // one per type for package clashes +var err{{.enum.Name}}NilPtr = errors.New("value pointer is nil") // one per type for package clashes // Scan implements the Scanner interface. func (x *{{.enum.Name}}) Scan(value interface{}) (err error) { @@ -106,12 +106,12 @@ func (x *{{.enum.Name}}) Scan(value interface{}) (err error) { *x = v case *{{.enum.Name}}: if v == nil{ - return _{{.enum.Name}}ErrNilPtr + return err{{.enum.Name}}NilPtr } *x = *v case *string: if v == nil{ - return _{{.enum.Name}}ErrNilPtr + return err{{.enum.Name}}NilPtr } *x, err = Parse{{.enum.Name}}(*v) default: From e9f5c5b20c83ad650c82223e4a92819a77d4d61a Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Mon, 31 Oct 2022 07:05:28 -0700 Subject: [PATCH 42/91] add sqlint support for string type enums (#135) --- .github/workflows/build_and_test.yml | 7 +- .github/workflows/release.yml | 8 +- Makefile | 2 +- README.md | 31 ++ _example/animal_enum.go | 5 +- _example/color_enum.go | 5 +- _example/commented_enum.go | 9 +- _example/custom_prefix_enum.go | 5 +- _example/enum_32_bit_enum.go | 4 +- _example/enum_64_bit_enum.go | 4 +- _example/example_enum.go | 8 +- _example/force_lower_enum.go | 5 +- _example/negative_enum.go | 9 +- _example/replace_prefix_enum.go | 4 +- _example/replace_prefix_int_enum.go | 4 +- _example/sql_enum.go | 4 +- _example/sql_int_enum.go | 4 +- _example/sql_str_enum.go | 4 +- _example/sql_str_int.go | 6 + _example/sql_str_int_enum.go | 208 +++++++++ _example/sql_str_int_enum_test.go | 432 ++++++++++++++++++ _example/strings_only_enum.go | 4 +- _example/user_template_enum.go | 5 +- .../Test118CustomPrefixExampleFile-1.18 | 6 +- .../Test118CustomPrefixExampleFile-og | 160 ++++++- generator/.snapshots/Test118ExampleFile-1.18 | 6 +- generator/.snapshots/Test118ExampleFile-og | 58 ++- .../Test118ExampleFileMoreOptions-1.18 | 6 +- .../Test118ExampleFileMoreOptions-og | 58 ++- .../Test118NoPrefixExampleFile-1.18 | 8 +- .../.snapshots/Test118NoPrefixExampleFile-og | 60 ++- ...18NoPrefixExampleFileWithSnakeToCamel-1.18 | 8 +- ...t118NoPrefixExampleFileWithSnakeToCamel-og | 60 ++- .../.snapshots/TestCustomPrefixExampleFile | 160 ++++++- generator/.snapshots/TestExampleFile | 58 ++- .../.snapshots/TestExampleFileMoreOptions | 58 ++- generator/.snapshots/TestNoPrefixExampleFile | 60 ++- .../TestNoPrefixExampleFileWithSnakeToCamel | 60 ++- .../.snapshots/TestReplacePrefixExampleFile | 60 ++- generator/enum.tmpl | 11 +- generator/enum_string.tmpl | 121 ++++- generator/generator.go | 8 + main.go | 9 + 43 files changed, 1594 insertions(+), 218 deletions(-) create mode 100644 _example/sql_str_int.go create mode 100644 _example/sql_str_int_enum.go create mode 100644 _example/sql_str_int_enum_test.go diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 0ab29a39..268b4c80 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -24,12 +24,12 @@ jobs: name: run tests with go version ${{ matrix.go }} steps: - name: install go - uses: actions/setup-go@v2 + uses: actions/setup-go@v3 with: go-version: ${{ matrix.go }} - name: checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Build run: make build @@ -43,11 +43,10 @@ jobs: make coveralls fi - name: Upload coverage - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: coverage path: coverage.* - name: Assert no changes - if: ${{ matrix.go }} > '1.16' run: make assert-no-changes diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c43adbd0..46a7bdf1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,12 +10,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up Go - uses: actions/setup-go@v2 + uses: actions/setup-go@v3 with: go-version: 1.19 @@ -28,14 +28,14 @@ jobs: ${{ runner.os }}-go- - name: Install GoReleaser - uses: goreleaser/goreleaser-action@v2 + uses: goreleaser/goreleaser-action@v3 with: install-only: true - name: Show GoReleaser version run: goreleaser -v - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v2 + uses: goreleaser/goreleaser-action@v3 if: success() && startsWith(github.ref, 'refs/tags/') with: # either 'goreleaser' (default) or 'goreleaser-pro' diff --git a/Makefile b/Makefile index de46c50c..8e49e341 100644 --- a/Makefile +++ b/Makefile @@ -101,7 +101,7 @@ bin/goveralls: go.sum snapshots: snapshots_1.17 snapshots: snapshots_1.18 -snapshots_%: +snapshots_%: clean echo "##### updating snapshots for golang $* #####" docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:$* -c './update-snapshots.sh || true' diff --git a/README.md b/README.md index 85ae0ac7..a5eb055b 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,37 @@ func (x *ImageType) UnmarshalText(text []byte) error If you find that the options given are not adequate for your use case, there is an option to add a custom template (`-t` flag) to the processing engine so that your custom code can be created! +## Now with string typed enums + +```go +// ENUM(pending, running, completed, failed) +type StrState string +``` + +```go +const ( + // StrStatePending is a StrState of type pending. + StrStatePending StrState = "pending" + // StrStateRunning is a StrState of type running. + StrStateRunning StrState = "running" + // StrStateCompleted is a StrState of type completed. + StrStateCompleted StrState = "completed" + // StrStateFailed is a StrState of type failed. + StrStateFailed StrState = "failed" +) +``` + +If you would like to get integer values in sql, but strings elsewhere, you can assign an int value in the declaration +like always, and specify the `--sqlint` flag. Those values will be then used to convey the int value to sql, while allowing you to use only strings elsewhere. +This might be helpful for things like swagger docs where you want the same type being used on the api layer, as you do in the +sql layer, and not have swagger assume that your enumerations are integers, but are in fact strings! + +```go +// swagger:enum StrState +// ENUM(pending, running, completed, failed) +type StrState string +``` + ## Goal The goal of go-enum is to create an easy to use enum generator that will take a decorated type declaration like `type EnumName int` and create the associated constant values and funcs that will make life a little easier for adding new values. diff --git a/_example/animal_enum.go b/_example/animal_enum.go index 47d05e4a..b1d6a604 100644 --- a/_example/animal_enum.go +++ b/_example/animal_enum.go @@ -7,6 +7,7 @@ package example import ( + "errors" "fmt" ) @@ -23,6 +24,8 @@ const ( AnimalFishSharp ) +var ErrInvalidAnimal = errors.New("not a valid Animal") + const _AnimalName = "CatDogFishFish++Fish#" var _AnimalMap = map[Animal]string{ @@ -54,5 +57,5 @@ func ParseAnimal(name string) (Animal, error) { if x, ok := _AnimalValue[name]; ok { return x, nil } - return Animal(0), fmt.Errorf("%s is not a valid Animal", name) + return Animal(0), fmt.Errorf("%s is %w", name, ErrInvalidAnimal) } diff --git a/_example/color_enum.go b/_example/color_enum.go index 0d3e091b..30005ff2 100644 --- a/_example/color_enum.go +++ b/_example/color_enum.go @@ -7,6 +7,7 @@ package example import ( + "errors" "fmt" "strings" ) @@ -37,6 +38,8 @@ const ( ColorRedOrangeBlue ) +var ErrInvalidColor = errors.New("not a valid Color") + const _ColorName = "BlackWhiteRedGreenBluegreyyellowblue-greenred-orangeyellow_greenred-orange-blue" var _ColorMap = map[Color]string{ @@ -91,7 +94,7 @@ func ParseColor(name string) (Color, error) { if x, ok := _ColorValue[name]; ok { return x, nil } - return Color(0), fmt.Errorf("%s is not a valid Color", name) + return Color(0), fmt.Errorf("%s is %w", name, ErrInvalidColor) } // MustParseColor converts a string to a Color, and panics if is not valid. diff --git a/_example/commented_enum.go b/_example/commented_enum.go index 5c3b6b52..edecdfa8 100644 --- a/_example/commented_enum.go +++ b/_example/commented_enum.go @@ -7,6 +7,7 @@ package example import ( + "errors" "fmt" "strings" ) @@ -22,6 +23,8 @@ const ( CommentedValue3 ) +var ErrInvalidCommented = errors.New("not a valid Commented") + const _CommentedName = "value1value2value3" var _CommentedMap = map[Commented]string{ @@ -52,7 +55,7 @@ func ParseCommented(name string) (Commented, error) { if x, ok := _CommentedValue[name]; ok { return x, nil } - return Commented(0), fmt.Errorf("%s is not a valid Commented", name) + return Commented(0), fmt.Errorf("%s is %w", name, ErrInvalidCommented) } // MarshalText implements the text marshaller method. @@ -85,6 +88,8 @@ const ( ComplexCommentedValue3 ) +var ErrInvalidComplexCommented = errors.New("not a valid ComplexCommented") + const _ComplexCommentedName = "value1value2value3" var _ComplexCommentedMap = map[ComplexCommented]string{ @@ -115,7 +120,7 @@ func ParseComplexCommented(name string) (ComplexCommented, error) { if x, ok := _ComplexCommentedValue[name]; ok { return x, nil } - return ComplexCommented(0), fmt.Errorf("%s is not a valid ComplexCommented", name) + return ComplexCommented(0), fmt.Errorf("%s is %w", name, ErrInvalidComplexCommented) } // MarshalText implements the text marshaller method. diff --git a/_example/custom_prefix_enum.go b/_example/custom_prefix_enum.go index 3e580a94..9822a406 100644 --- a/_example/custom_prefix_enum.go +++ b/_example/custom_prefix_enum.go @@ -7,6 +7,7 @@ package example import ( + "errors" "fmt" ) @@ -19,6 +20,8 @@ const ( AcmeIncProductGlue ) +var ErrInvalidProduct = errors.New("not a valid Product") + const _ProductName = "AnvilDynamiteGlue" var _ProductMap = map[Product]string{ @@ -46,5 +49,5 @@ func ParseProduct(name string) (Product, error) { if x, ok := _ProductValue[name]; ok { return x, nil } - return Product(0), fmt.Errorf("%s is not a valid Product", name) + return Product(0), fmt.Errorf("%s is %w", name, ErrInvalidProduct) } diff --git a/_example/enum_32_bit_enum.go b/_example/enum_32_bit_enum.go index aac57aa7..287611b8 100644 --- a/_example/enum_32_bit_enum.go +++ b/_example/enum_32_bit_enum.go @@ -38,6 +38,8 @@ const ( Enum32bitE2P30 Enum32bit = iota + 1073741813 ) +var ErrInvalidEnum32bit = fmt.Errorf("not a valid Enum32bit, try [%s]", strings.Join(_Enum32bitNames, ", ")) + const _Enum32bitName = "UnknoE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30" var _Enum32bitNames = []string{ @@ -105,5 +107,5 @@ func ParseEnum32bit(name string) (Enum32bit, error) { if x, ok := _Enum32bitValue[name]; ok { return x, nil } - return Enum32bit(0), fmt.Errorf("%s is not a valid Enum32bit, try [%s]", name, strings.Join(_Enum32bitNames, ", ")) + return Enum32bit(0), fmt.Errorf("%s is %w", name, ErrInvalidEnum32bit) } diff --git a/_example/enum_64_bit_enum.go b/_example/enum_64_bit_enum.go index ff68c284..d80fe053 100644 --- a/_example/enum_64_bit_enum.go +++ b/_example/enum_64_bit_enum.go @@ -46,6 +46,8 @@ const ( Enum64bitE2P63 Enum64bit = iota + 18446744073709551600 ) +var ErrInvalidEnum64bit = fmt.Errorf("not a valid Enum64bit, try [%s]", strings.Join(_Enum64bitNames, ", ")) + const _Enum64bitName = "UnknoE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33E2P63" var _Enum64bitNames = []string{ @@ -125,5 +127,5 @@ func ParseEnum64bit(name string) (Enum64bit, error) { if x, ok := _Enum64bitValue[name]; ok { return x, nil } - return Enum64bit(0), fmt.Errorf("%s is not a valid Enum64bit, try [%s]", name, strings.Join(_Enum64bitNames, ", ")) + return Enum64bit(0), fmt.Errorf("%s is %w", name, ErrInvalidEnum64bit) } diff --git a/_example/example_enum.go b/_example/example_enum.go index 0f3305bc..3e43b02b 100644 --- a/_example/example_enum.go +++ b/_example/example_enum.go @@ -56,6 +56,8 @@ const ( MakeVolkswagon ) +var ErrInvalidMake = fmt.Errorf("not a valid Make, try [%s]", strings.Join(_MakeNames, ", ")) + const _MakeName = "ToyotaChevyFordTeslaHyundaiNissanJaguarAudiBMWMercedes-BenzVolkswagon" var _MakeNames = []string{ @@ -135,7 +137,7 @@ func ParseMake(name string) (Make, error) { if x, ok := _MakeValue[strings.ToLower(name)]; ok { return x, nil } - return Make(0), fmt.Errorf("%s is not a valid Make, try [%s]", name, strings.Join(_MakeNames, ", ")) + return Make(0), fmt.Errorf("%s is %w", name, ErrInvalidMake) } // MarshalText implements the text marshaller method. @@ -186,6 +188,8 @@ const ( NoZerosPpps ) +var ErrInvalidNoZeros = fmt.Errorf("not a valid NoZeros, try [%s]", strings.Join(_NoZerosNames, ", ")) + const _NoZerosName = "startmiddleendpsppsppps" var _NoZerosNames = []string{ @@ -245,7 +249,7 @@ func ParseNoZeros(name string) (NoZeros, error) { if x, ok := _NoZerosValue[strings.ToLower(name)]; ok { return x, nil } - return NoZeros(0), fmt.Errorf("%s is not a valid NoZeros, try [%s]", name, strings.Join(_NoZerosNames, ", ")) + return NoZeros(0), fmt.Errorf("%s is %w", name, ErrInvalidNoZeros) } // MarshalText implements the text marshaller method. diff --git a/_example/force_lower_enum.go b/_example/force_lower_enum.go index e8853d46..4ba44f11 100644 --- a/_example/force_lower_enum.go +++ b/_example/force_lower_enum.go @@ -7,6 +7,7 @@ package example import ( + "errors" "fmt" ) @@ -17,6 +18,8 @@ const ( ForceLowerTypeBootNode ) +var ErrInvalidForceLowerType = errors.New("not a valid ForceLowerType") + const _ForceLowerTypeName = "dataswapbootnode" var _ForceLowerTypeMap = map[ForceLowerType]string{ @@ -42,5 +45,5 @@ func ParseForceLowerType(name string) (ForceLowerType, error) { if x, ok := _ForceLowerTypeValue[name]; ok { return x, nil } - return ForceLowerType(0), fmt.Errorf("%s is not a valid ForceLowerType", name) + return ForceLowerType(0), fmt.Errorf("%s is %w", name, ErrInvalidForceLowerType) } diff --git a/_example/negative_enum.go b/_example/negative_enum.go index 40f7821b..52faca23 100644 --- a/_example/negative_enum.go +++ b/_example/negative_enum.go @@ -7,6 +7,7 @@ package example import ( + "errors" "fmt" "strings" ) @@ -22,6 +23,8 @@ const ( AllNegativeUgly ) +var ErrInvalidAllNegative = errors.New("not a valid AllNegative") + const _AllNegativeName = "UnknownGoodBadUgly" var _AllNegativeMap = map[AllNegative]string{ @@ -59,7 +62,7 @@ func ParseAllNegative(name string) (AllNegative, error) { if x, ok := _AllNegativeValue[strings.ToLower(name)]; ok { return x, nil } - return AllNegative(0), fmt.Errorf("%s is not a valid AllNegative", name) + return AllNegative(0), fmt.Errorf("%s is %w", name, ErrInvalidAllNegative) } const ( @@ -71,6 +74,8 @@ const ( StatusBad ) +var ErrInvalidStatus = errors.New("not a valid Status") + const _StatusName = "UnknownGoodBad" var _StatusMap = map[Status]string{ @@ -105,5 +110,5 @@ func ParseStatus(name string) (Status, error) { if x, ok := _StatusValue[strings.ToLower(name)]; ok { return x, nil } - return Status(0), fmt.Errorf("%s is not a valid Status", name) + return Status(0), fmt.Errorf("%s is %w", name, ErrInvalidStatus) } diff --git a/_example/replace_prefix_enum.go b/_example/replace_prefix_enum.go index b5aac436..2d2b921d 100644 --- a/_example/replace_prefix_enum.go +++ b/_example/replace_prefix_enum.go @@ -20,6 +20,8 @@ const ( AcmeInc_LocationUnknown Shop = "LocationUnknown" ) +var ErrInvalidShop = fmt.Errorf("not a valid Shop, try [%s]", strings.Join(_ShopNames, ", ")) + var _ShopNames = []string{ string(AcmeInc_SOME_PLACE_AWESOME), string(AcmeInc_SomewhereElse), @@ -55,7 +57,7 @@ func ParseShop(name string) (Shop, error) { if x, ok := _ShopValue[name]; ok { return x, nil } - return Shop(""), fmt.Errorf("%s is not a valid Shop, try [%s]", name, strings.Join(_ShopNames, ", ")) + return Shop(""), fmt.Errorf("%s is %w", name, ErrInvalidShop) } // MarshalText implements the text marshaller method. diff --git a/_example/replace_prefix_int_enum.go b/_example/replace_prefix_int_enum.go index 91b875ca..ad4a4cd1 100644 --- a/_example/replace_prefix_int_enum.go +++ b/_example/replace_prefix_int_enum.go @@ -20,6 +20,8 @@ const ( AcmeInt_LocationUnknown ) +var ErrInvalidIntShop = fmt.Errorf("not a valid IntShop, try [%s]", strings.Join(_IntShopNames, ", ")) + const _IntShopName = "SOME_PLACE_AWESOMESomewhereElseLocationUnknown" var _IntShopNames = []string{ @@ -60,7 +62,7 @@ func ParseIntShop(name string) (IntShop, error) { if x, ok := _IntShopValue[name]; ok { return x, nil } - return IntShop(0), fmt.Errorf("%s is not a valid IntShop, try [%s]", name, strings.Join(_IntShopNames, ", ")) + return IntShop(0), fmt.Errorf("%s is %w", name, ErrInvalidIntShop) } // MarshalText implements the text marshaller method. diff --git a/_example/sql_enum.go b/_example/sql_enum.go index 382d7001..51f3a802 100644 --- a/_example/sql_enum.go +++ b/_example/sql_enum.go @@ -25,6 +25,8 @@ const ( ProjectStatusRejected ) +var ErrInvalidProjectStatus = errors.New("not a valid ProjectStatus") + const _ProjectStatusName = "pendinginWorkcompletedrejected" var _ProjectStatusMap = map[ProjectStatus]string{ @@ -54,7 +56,7 @@ func ParseProjectStatus(name string) (ProjectStatus, error) { if x, ok := _ProjectStatusValue[name]; ok { return x, nil } - return ProjectStatus(0), fmt.Errorf("%s is not a valid ProjectStatus", name) + return ProjectStatus(0), fmt.Errorf("%s is %w", name, ErrInvalidProjectStatus) } func (x ProjectStatus) Ptr() *ProjectStatus { diff --git a/_example/sql_int_enum.go b/_example/sql_int_enum.go index f40e0c5b..34bcc22a 100644 --- a/_example/sql_int_enum.go +++ b/_example/sql_int_enum.go @@ -26,6 +26,8 @@ const ( ImageTypeGif ) +var ErrInvalidImageType = errors.New("not a valid ImageType") + const _ImageTypeName = "jpegjpgpngtiffgif" var _ImageTypeMap = map[ImageType]string{ @@ -57,7 +59,7 @@ func ParseImageType(name string) (ImageType, error) { if x, ok := _ImageTypeValue[name]; ok { return x, nil } - return ImageType(0), fmt.Errorf("%s is not a valid ImageType", name) + return ImageType(0), fmt.Errorf("%s is %w", name, ErrInvalidImageType) } var errImageTypeNilPtr = errors.New("value pointer is nil") // one per type for package clashes diff --git a/_example/sql_str_enum.go b/_example/sql_str_enum.go index 303642a6..9e04ec30 100644 --- a/_example/sql_str_enum.go +++ b/_example/sql_str_enum.go @@ -23,6 +23,8 @@ const ( JobStateFailed ) +var ErrInvalidJobState = errors.New("not a valid JobState") + const _JobStateName = "pendingprocessingcompletedfailed" var _JobStateMap = map[JobState]string{ @@ -52,7 +54,7 @@ func ParseJobState(name string) (JobState, error) { if x, ok := _JobStateValue[name]; ok { return x, nil } - return JobState(0), fmt.Errorf("%s is not a valid JobState", name) + return JobState(0), fmt.Errorf("%s is %w", name, ErrInvalidJobState) } var errJobStateNilPtr = errors.New("value pointer is nil") // one per type for package clashes diff --git a/_example/sql_str_int.go b/_example/sql_str_int.go new file mode 100644 index 00000000..e7753b9f --- /dev/null +++ b/_example/sql_str_int.go @@ -0,0 +1,6 @@ +//go:generate ../bin/go-enum -f=$GOFILE --sqlint --sqlnullint --names + +package example + +// ENUM(_,zeus, apollo, athena=20, ares) +type GreekGod string diff --git a/_example/sql_str_int_enum.go b/_example/sql_str_int_enum.go new file mode 100644 index 00000000..627d0629 --- /dev/null +++ b/_example/sql_str_int_enum.go @@ -0,0 +1,208 @@ +// Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example + +package example + +import ( + "database/sql/driver" + "errors" + "fmt" + "strconv" + "strings" +) + +const ( + // Skipped value. + _ GreekGod = "_" + // GreekGodZeus is a GreekGod of type zeus. + GreekGodZeus GreekGod = "zeus" + // GreekGodApollo is a GreekGod of type apollo. + GreekGodApollo GreekGod = "apollo" + // GreekGodAthena is a GreekGod of type athena. + GreekGodAthena GreekGod = "athena" + // GreekGodAres is a GreekGod of type ares. + GreekGodAres GreekGod = "ares" +) + +var ErrInvalidGreekGod = fmt.Errorf("not a valid GreekGod, try [%s]", strings.Join(_GreekGodNames, ", ")) + +var _GreekGodNames = []string{ + string(GreekGodZeus), + string(GreekGodApollo), + string(GreekGodAthena), + string(GreekGodAres), +} + +// GreekGodNames returns a list of possible string values of GreekGod. +func GreekGodNames() []string { + tmp := make([]string, len(_GreekGodNames)) + copy(tmp, _GreekGodNames) + return tmp +} + +// String implements the Stringer interface. +func (x GreekGod) String() string { + return string(x) +} + +// String implements the Stringer interface. +func (x GreekGod) IsValid() bool { + _, err := ParseGreekGod(string(x)) + return err == nil +} + +var _GreekGodValue = map[string]GreekGod{ + "zeus": GreekGodZeus, + "apollo": GreekGodApollo, + "athena": GreekGodAthena, + "ares": GreekGodAres, +} + +// ParseGreekGod attempts to convert a string to a GreekGod. +func ParseGreekGod(name string) (GreekGod, error) { + if x, ok := _GreekGodValue[name]; ok { + return x, nil + } + return GreekGod(""), fmt.Errorf("%s is %w", name, ErrInvalidGreekGod) +} + +var errGreekGodNilPtr = errors.New("value pointer is nil") // one per type for package clashes + +var sqlIntGreekGodMap = map[int64]GreekGod{ + 1: GreekGodZeus, + 2: GreekGodApollo, + 20: GreekGodAthena, + 21: GreekGodAres, +} + +var sqlIntGreekGodValue = map[GreekGod]int64{ + GreekGodZeus: 1, + GreekGodApollo: 2, + GreekGodAthena: 20, + GreekGodAres: 21, +} + +func lookupSqlIntGreekGod(val int64) (GreekGod, error) { + x, ok := sqlIntGreekGodMap[val] + if !ok { + return x, fmt.Errorf("%v is not %w", val, ErrInvalidGreekGod) + } + return x, nil +} + +// Scan implements the Scanner interface. +func (x *GreekGod) Scan(value interface{}) (err error) { + if value == nil { + *x = GreekGod("") + return + } + + // A wider range of scannable types. + // driver.Value values at the top of the list for expediency + switch v := value.(type) { + case int64: + *x, err = lookupSqlIntGreekGod(v) + case string: + *x, err = ParseGreekGod(v) + case []byte: + if val, verr := strconv.ParseInt(string(v), 10, 64); verr == nil { + *x, err = lookupSqlIntGreekGod(val) + } else { + // try parsing the value as a string + *x, err = ParseGreekGod(string(v)) + } + case GreekGod: + *x = v + case int: + *x, err = lookupSqlIntGreekGod(int64(v)) + case *GreekGod: + if v == nil { + return errGreekGodNilPtr + } + *x = *v + case uint: + *x, err = lookupSqlIntGreekGod(int64(v)) + case uint64: + *x, err = lookupSqlIntGreekGod(int64(v)) + case *int: + if v == nil { + return errGreekGodNilPtr + } + *x, err = lookupSqlIntGreekGod(int64(*v)) + case *int64: + if v == nil { + return errGreekGodNilPtr + } + *x, err = lookupSqlIntGreekGod(int64(*v)) + case float64: // json marshals everything as a float64 if it's a number + *x, err = lookupSqlIntGreekGod(int64(v)) + case *float64: // json marshals everything as a float64 if it's a number + if v == nil { + return errGreekGodNilPtr + } + *x, err = lookupSqlIntGreekGod(int64(*v)) + case *uint: + if v == nil { + return errGreekGodNilPtr + } + *x, err = lookupSqlIntGreekGod(int64(*v)) + case *uint64: + if v == nil { + return errGreekGodNilPtr + } + *x, err = lookupSqlIntGreekGod(int64(*v)) + case *string: + if v == nil { + return errGreekGodNilPtr + } + *x, err = ParseGreekGod(*v) + default: + return errors.New("invalid type for GreekGod") + } + + return +} + +// Value implements the driver Valuer interface. +func (x GreekGod) Value() (driver.Value, error) { + val, ok := sqlIntGreekGodValue[x] + if !ok { + return nil, ErrInvalidGreekGod + } + return int64(val), nil +} + +type NullGreekGod struct { + GreekGod GreekGod + Valid bool +} + +func NewNullGreekGod(val interface{}) (x NullGreekGod) { + err := x.Scan(val) // yes, we ignore this error, it will just be an invalid value. + _ = err // make any errcheck linters happy + return +} + +// Scan implements the Scanner interface. +func (x *NullGreekGod) Scan(value interface{}) (err error) { + if value == nil { + x.GreekGod, x.Valid = GreekGod(""), false + return + } + + err = x.GreekGod.Scan(value) + x.Valid = (err == nil) + return +} + +// Value implements the driver Valuer interface. +func (x NullGreekGod) Value() (driver.Value, error) { + if !x.Valid { + return nil, nil + } + // driver.Value accepts int64 for int values. + return string(x.GreekGod), nil +} diff --git a/_example/sql_str_int_enum_test.go b/_example/sql_str_int_enum_test.go new file mode 100644 index 00000000..d30fab5b --- /dev/null +++ b/_example/sql_str_int_enum_test.go @@ -0,0 +1,432 @@ +package example + +import ( + "database/sql" + driver "database/sql/driver" + "errors" + "testing" + + gomock "github.com/golang/mock/gomock" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestExampleSQLStrIntOnly(t *testing.T) { + + tests := map[string]struct { + setupMock func(t testing.TB, mocks *MockSQL) + tester func(t testing.TB, db *sql.DB) + }{ + "NonNullable select nil": { + setupMock: func(t testing.TB, mocks *MockSQL) { + gomock.InOrder( + // Select In Work + mocks.Conn.EXPECT().Prepare("SELECT god FROM job WHERE id = ?").Return(mocks.Stmt, nil), + mocks.Stmt.EXPECT().NumInput().Return(1), + mocks.Stmt.EXPECT().Query(gomock.Any()).Return(mocks.Rows, nil), + mocks.Rows.EXPECT().Columns().Return([]string{`god`}), + mocks.Rows.EXPECT().Next(gomock.Any()).SetArg(0, []driver.Value{nil}).Return(nil), + mocks.Rows.EXPECT().Close().Return(nil), + mocks.Stmt.EXPECT().Close().Return(nil), + ) + }, + tester: func(t testing.TB, conn *sql.DB) { + // Get inWork god + god, err := getGreekGod(conn) + require.NoError(t, err, "failed getting project god") + require.Equal(t, GreekGod(""), god) + }, + }, + "Nullable Select Null": { + setupMock: func(t testing.TB, mocks *MockSQL) { + gomock.InOrder( + // Select In Work + mocks.Conn.EXPECT().Prepare("SELECT god FROM job WHERE id = ?").Return(mocks.Stmt, nil), + mocks.Stmt.EXPECT().NumInput().Return(1), + mocks.Stmt.EXPECT().Query(gomock.Any()).Return(mocks.Rows, nil), + mocks.Rows.EXPECT().Columns().Return([]string{`god`}), + mocks.Rows.EXPECT().Next(gomock.Any()).SetArg(0, []driver.Value{nil}).Return(nil), + mocks.Rows.EXPECT().Close().Return(nil), + mocks.Stmt.EXPECT().Close().Return(nil), + ) + }, + tester: func(t testing.TB, conn *sql.DB) { + // Get inWork god + god, err := getNullGreekGod(conn) + require.NoError(t, err, "failed getting project god") + require.False(t, god.Valid) + }, + }, + "Select a string": { + setupMock: func(t testing.TB, mocks *MockSQL) { + gomock.InOrder( + // Select In Work + mocks.Conn.EXPECT().Prepare("SELECT god FROM job WHERE id = ?").Return(mocks.Stmt, nil), + mocks.Stmt.EXPECT().NumInput().Return(1), + mocks.Stmt.EXPECT().Query(gomock.Any()).Return(mocks.Rows, nil), + mocks.Rows.EXPECT().Columns().Return([]string{`god`}), + mocks.Rows.EXPECT().Next(gomock.Any()).SetArg(0, []driver.Value{GreekGodAthena.String()}).Return(nil), + mocks.Rows.EXPECT().Close().Return(nil), + mocks.Stmt.EXPECT().Close().Return(nil), + ) + }, + tester: func(t testing.TB, conn *sql.DB) { + // Get inWork god + god, err := getGreekGod(conn) + require.NoError(t, err, "failed getting project god") + require.Equal(t, GreekGodAthena, god) + }, + }, + "Nullable select an int": { + setupMock: func(t testing.TB, mocks *MockSQL) { + gomock.InOrder( + // Select In Work + mocks.Conn.EXPECT().Prepare("SELECT god FROM job WHERE id = ?").Return(mocks.Stmt, nil), + mocks.Stmt.EXPECT().NumInput().Return(1), + mocks.Stmt.EXPECT().Query(gomock.Any()).Return(mocks.Rows, nil), + mocks.Rows.EXPECT().Columns().Return([]string{`god`}), + mocks.Rows.EXPECT().Next(gomock.Any()).SetArg(0, []driver.Value{int(2)}).Return(nil), + mocks.Rows.EXPECT().Close().Return(nil), + mocks.Stmt.EXPECT().Close().Return(nil), + ) + }, + tester: func(t testing.TB, conn *sql.DB) { + // Get inWork god + god, err := getNullGreekGod(conn) + require.NoError(t, err, "failed getting project god") + require.True(t, god.Valid) + require.Equal(t, GreekGodApollo, god.GreekGod) + }, + }, + "Nullable select an int64": { + setupMock: func(t testing.TB, mocks *MockSQL) { + gomock.InOrder( + // Select In Work + mocks.Conn.EXPECT().Prepare("SELECT god FROM job WHERE id = ?").Return(mocks.Stmt, nil), + mocks.Stmt.EXPECT().NumInput().Return(1), + mocks.Stmt.EXPECT().Query(gomock.Any()).Return(mocks.Rows, nil), + mocks.Rows.EXPECT().Columns().Return([]string{`god`}), + mocks.Rows.EXPECT().Next(gomock.Any()).SetArg(0, []driver.Value{int64(2)}).Return(nil), + mocks.Rows.EXPECT().Close().Return(nil), + mocks.Stmt.EXPECT().Close().Return(nil), + ) + }, + tester: func(t testing.TB, conn *sql.DB) { + // Get inWork god + god, err := getNullGreekGod(conn) + require.NoError(t, err, "failed getting project god") + require.True(t, god.Valid) + require.Equal(t, GreekGodApollo, god.GreekGod) + }, + }, + "Nullable select an uint": { + setupMock: func(t testing.TB, mocks *MockSQL) { + gomock.InOrder( + // Select In Work + mocks.Conn.EXPECT().Prepare("SELECT god FROM job WHERE id = ?").Return(mocks.Stmt, nil), + mocks.Stmt.EXPECT().NumInput().Return(1), + mocks.Stmt.EXPECT().Query(gomock.Any()).Return(mocks.Rows, nil), + mocks.Rows.EXPECT().Columns().Return([]string{`god`}), + mocks.Rows.EXPECT().Next(gomock.Any()).SetArg(0, []driver.Value{uint(2)}).Return(nil), + mocks.Rows.EXPECT().Close().Return(nil), + mocks.Stmt.EXPECT().Close().Return(nil), + ) + }, + tester: func(t testing.TB, conn *sql.DB) { + // Get inWork god + god, err := getNullGreekGod(conn) + require.NoError(t, err, "failed getting project god") + require.True(t, god.Valid) + require.Equal(t, GreekGodApollo, god.GreekGod) + }, + }, + "Nullable select an uint64": { + setupMock: func(t testing.TB, mocks *MockSQL) { + gomock.InOrder( + // Select In Work + mocks.Conn.EXPECT().Prepare("SELECT god FROM job WHERE id = ?").Return(mocks.Stmt, nil), + mocks.Stmt.EXPECT().NumInput().Return(1), + mocks.Stmt.EXPECT().Query(gomock.Any()).Return(mocks.Rows, nil), + mocks.Rows.EXPECT().Columns().Return([]string{`god`}), + mocks.Rows.EXPECT().Next(gomock.Any()).SetArg(0, []driver.Value{uint64(2)}).Return(nil), + mocks.Rows.EXPECT().Close().Return(nil), + mocks.Stmt.EXPECT().Close().Return(nil), + ) + }, + tester: func(t testing.TB, conn *sql.DB) { + // Get inWork god + god, err := getNullGreekGod(conn) + require.NoError(t, err, "failed getting project god") + require.True(t, god.Valid) + require.Equal(t, GreekGodApollo, god.GreekGod) + }, + }, + "Nullable select an *uint64": { + setupMock: func(t testing.TB, mocks *MockSQL) { + val := uint64(2) + gomock.InOrder( + // Select In Work + mocks.Conn.EXPECT().Prepare("SELECT god FROM job WHERE id = ?").Return(mocks.Stmt, nil), + mocks.Stmt.EXPECT().NumInput().Return(1), + mocks.Stmt.EXPECT().Query(gomock.Any()).Return(mocks.Rows, nil), + mocks.Rows.EXPECT().Columns().Return([]string{`god`}), + mocks.Rows.EXPECT().Next(gomock.Any()).SetArg(0, []driver.Value{&val}).Return(nil), + mocks.Rows.EXPECT().Close().Return(nil), + mocks.Stmt.EXPECT().Close().Return(nil), + ) + }, + tester: func(t testing.TB, conn *sql.DB) { + // Get inWork god + god, err := getNullGreekGod(conn) + require.NoError(t, err, "failed getting project god") + require.True(t, god.Valid) + require.Equal(t, GreekGodApollo, god.GreekGod) + }, + }, + "Nullable select an *int64": { + setupMock: func(t testing.TB, mocks *MockSQL) { + val := int64(2) + gomock.InOrder( + // Select In Work + mocks.Conn.EXPECT().Prepare("SELECT god FROM job WHERE id = ?").Return(mocks.Stmt, nil), + mocks.Stmt.EXPECT().NumInput().Return(1), + mocks.Stmt.EXPECT().Query(gomock.Any()).Return(mocks.Rows, nil), + mocks.Rows.EXPECT().Columns().Return([]string{`god`}), + mocks.Rows.EXPECT().Next(gomock.Any()).SetArg(0, []driver.Value{&val}).Return(nil), + mocks.Rows.EXPECT().Close().Return(nil), + mocks.Stmt.EXPECT().Close().Return(nil), + ) + }, + tester: func(t testing.TB, conn *sql.DB) { + // Get inWork god + god, err := getNullGreekGod(conn) + require.NoError(t, err, "failed getting project god") + require.True(t, god.Valid) + require.Equal(t, GreekGodApollo, god.GreekGod) + }, + }, + "Nullable select an *uint": { + setupMock: func(t testing.TB, mocks *MockSQL) { + val := uint(2) + gomock.InOrder( + // Select In Work + mocks.Conn.EXPECT().Prepare("SELECT god FROM job WHERE id = ?").Return(mocks.Stmt, nil), + mocks.Stmt.EXPECT().NumInput().Return(1), + mocks.Stmt.EXPECT().Query(gomock.Any()).Return(mocks.Rows, nil), + mocks.Rows.EXPECT().Columns().Return([]string{`god`}), + mocks.Rows.EXPECT().Next(gomock.Any()).SetArg(0, []driver.Value{&val}).Return(nil), + mocks.Rows.EXPECT().Close().Return(nil), + mocks.Stmt.EXPECT().Close().Return(nil), + ) + }, + tester: func(t testing.TB, conn *sql.DB) { + // Get inWork god + god, err := getNullGreekGod(conn) + require.NoError(t, err, "failed getting project god") + require.True(t, god.Valid) + require.Equal(t, GreekGodApollo, god.GreekGod) + }, + }, + "standard update": { + setupMock: func(t testing.TB, mocks *MockSQL) { + gomock.InOrder( + // Update value + mocks.Conn.EXPECT().Prepare("Update job SET god = ? WHERE id = ?").Return(mocks.Stmt, nil), + mocks.Stmt.EXPECT().NumInput().Return(2), + mocks.Stmt.EXPECT().Exec(MatchesValues(sqlIntGreekGodValue[GreekGodAres], hardcodedProjectID)).Return(mocks.Result, nil), + mocks.Stmt.EXPECT().Close().Return(nil), + ) + }, + tester: func(t testing.TB, conn *sql.DB) { + // Get inWork god + err := setGreekGod(conn, GreekGodAres) + require.NoError(t, err, "failed updating project god") + }, + }, + "nullable string update": { + setupMock: func(t testing.TB, mocks *MockSQL) { + gomock.InOrder( + // Update value + mocks.Conn.EXPECT().Prepare("Update job SET god = ? WHERE id = ?").Return(mocks.Stmt, nil), + mocks.Stmt.EXPECT().NumInput().Return(2), + mocks.Stmt.EXPECT().Exec(MatchesValues(GreekGodAres.String(), hardcodedProjectID)).Return(mocks.Result, nil), + mocks.Stmt.EXPECT().Close().Return(nil), + ) + }, + tester: func(t testing.TB, conn *sql.DB) { + // Get inWork god + err := setGreekGod(conn, NewNullGreekGod(GreekGodAres)) + require.NoError(t, err, "failed updating project god") + }, + }, + "nullable invalid string update": { + setupMock: func(t testing.TB, mocks *MockSQL) { + gomock.InOrder( + // Update value + mocks.Conn.EXPECT().Prepare("Update job SET god = ? WHERE id = ?").Return(mocks.Stmt, nil), + mocks.Stmt.EXPECT().NumInput().Return(2), + mocks.Stmt.EXPECT().Exec(MatchesValues(nil, hardcodedProjectID)).Return(mocks.Result, nil), + mocks.Stmt.EXPECT().Close().Return(nil), + ) + }, + tester: func(t testing.TB, conn *sql.DB) { + // Get inWork god + err := setGreekGod(conn, NullGreekGod{}) + require.NoError(t, err, "failed updating project god") + }, + }, + } + + driverctrl := gomock.NewController(t) + driver := NewMockDriver(driverctrl) + defer func() { + driverctrl.Finish() + }() + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + + require.NotNil(t, tc.setupMock) + require.NotNil(t, tc.tester) + + sql.Register(t.Name(), driver) + mocks, finish := WithMockSQL(t) + defer finish() + + driver.EXPECT().Open(dataSourceName).Return(mocks.Conn, nil) + + conn, err := sql.Open(t.Name(), dataSourceName) + require.NoError(t, err, "failed opening mock db") + + tc.setupMock(t, mocks) + + tc.tester(t, conn) + + }) + } +} + +func getGreekGod(db *sql.DB) (state GreekGod, err error) { + err = db.QueryRow(`SELECT god FROM job WHERE id = ?`, hardcodedProjectID).Scan(&state) + return +} + +func getNullGreekGod(db *sql.DB) (state NullGreekGod, err error) { + err = db.QueryRow(`SELECT god FROM job WHERE id = ?`, hardcodedProjectID).Scan(&state) + return +} + +func setGreekGod(db *sql.DB, state interface{}) error { + _, err := db.Exec(`Update job SET god = ? WHERE id = ?`, state, hardcodedProjectID) + return err +} + +func TestSQLStrIntExtras(t *testing.T) { + + assert.Equal(t, sqlIntGreekGodMap[20], GreekGod("athena"), "String value is not correct") + + _, err := ParseGreekGod(`NotAStatus`) + assert.Error(t, err, "Should have had an error parsing a non god") + assert.True(t, errors.Is(err, ErrInvalidGreekGod)) + + var ( + intVal int = 3 + strVal string = "completed" + enumVal JobState = JobStateCompleted + nullInt *int + nullInt64 *int64 + nullUint *uint + nullUint64 *uint64 + nullString *string + nullJobState *JobState + ) + + tests := map[string]struct { + input interface{} + result NullJobState + }{ + "nil": {}, + "val": { + input: JobStateFailed, + result: NullJobState{ + JobState: JobStateFailed, + Valid: true, + }, + }, + "ptr": { + input: &enumVal, + result: NullJobState{ + JobState: JobStateCompleted, + Valid: true, + }, + }, + "string": { + input: strVal, + result: NullJobState{ + JobState: JobStateCompleted, + Valid: true, + }, + }, + "*string": { + input: &strVal, + result: NullJobState{ + JobState: JobStateCompleted, + Valid: true, + }, + }, + "invalid string": { + input: "random value", + }, + "[]byte": { + input: []byte(JobStateProcessing.String()), + result: NullJobState{ + JobState: JobStateProcessing, + Valid: true, + }, + }, + "int": { + input: intVal, + result: NullJobState{ + JobState: JobStateFailed, + Valid: true, + }, + }, + "*int": { + input: &intVal, + result: NullJobState{ + JobState: JobStateFailed, + Valid: true, + }, + }, + "nullInt": { + input: nullInt, + }, + "nullInt64": { + input: nullInt64, + }, + "nullUint": { + input: nullUint, + }, + "nullUint64": { + input: nullUint64, + }, + "nullString": { + input: nullString, + }, + "nullImageType": { + input: nullJobState, + }, + "int as []byte": { // must have --sqlnullint flag to get this feature. + input: []byte("3"), + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + god := NewNullJobState(tc.input) + assert.Equal(t, god, tc.result) + + }) + } + +} diff --git a/_example/strings_only_enum.go b/_example/strings_only_enum.go index 82618761..60ce0837 100644 --- a/_example/strings_only_enum.go +++ b/_example/strings_only_enum.go @@ -25,6 +25,8 @@ const ( StrStateFailed StrState = "failed" ) +var ErrInvalidStrState = fmt.Errorf("not a valid StrState, try [%s]", strings.Join(_StrStateNames, ", ")) + var _StrStateNames = []string{ string(StrStatePending), string(StrStateRunning), @@ -66,7 +68,7 @@ func ParseStrState(name string) (StrState, error) { if x, ok := _StrStateValue[strings.ToLower(name)]; ok { return x, nil } - return StrState(""), fmt.Errorf("%s is not a valid StrState, try [%s]", name, strings.Join(_StrStateNames, ", ")) + return StrState(""), fmt.Errorf("%s is %w", name, ErrInvalidStrState) } // MustParseStrState converts a string to a StrState, and panics if is not valid. diff --git a/_example/user_template_enum.go b/_example/user_template_enum.go index e90c1524..bcd41c9c 100644 --- a/_example/user_template_enum.go +++ b/_example/user_template_enum.go @@ -7,6 +7,7 @@ package example import ( + "errors" "fmt" ) @@ -19,6 +20,8 @@ const ( OceanColorGreen ) +var ErrInvalidOceanColor = errors.New("not a valid OceanColor") + const _OceanColorName = "CeruleanBlueGreen" var _OceanColorMap = map[OceanColor]string{ @@ -46,7 +49,7 @@ func ParseOceanColor(name string) (OceanColor, error) { if x, ok := _OceanColorValue[name]; ok { return x, nil } - return OceanColor(0), fmt.Errorf("%s is not a valid OceanColor", name) + return OceanColor(0), fmt.Errorf("%s is %w", name, ErrInvalidOceanColor) } func ParseOceanColorGlobbedExample() bool { diff --git a/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 b/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 index 8754a636..c034f177 100644 --- a/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 +++ b/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 @@ -1,4 +1,4 @@ -([]string) (len=280) { +([]string) (len=282) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -26,6 +26,8 @@ (string) (len=21) "\tCustom_prefix_Delete", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidChangeType = errors.New(\"not a valid ChangeType\")", + (string) "", (string) (len=44) "const _ChangeTypeName = \"CreateUpdateDelete\"", (string) "", (string) (len=43) "var _ChangeTypeMap = map[ChangeType]string{", @@ -56,7 +58,7 @@ (string) (len=41) "\tif x, ok := _ChangeTypeValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=71) "\treturn ChangeType(0), fmt.Errorf(\"%s is not a valid ChangeType\", name)", + (string) (len=73) "\treturn ChangeType(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidChangeType)", (string) (len=1) "}", (string) "", (string) (len=39) "func (x ChangeType) Ptr() *ChangeType {", diff --git a/generator/.snapshots/Test118CustomPrefixExampleFile-og b/generator/.snapshots/Test118CustomPrefixExampleFile-og index 52e8e9c5..37474107 100644 --- a/generator/.snapshots/Test118CustomPrefixExampleFile-og +++ b/generator/.snapshots/Test118CustomPrefixExampleFile-og @@ -1,4 +1,4 @@ -([]string) (len=3841) { +([]string) (len=3971) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -26,6 +26,8 @@ (string) (len=19) "\tCustom_prefix_Fish", (string) (len=1) ")", (string) "", + (string) (len=55) "var ErrInvalidAnimal = errors.New(\"not a valid Animal\")", + (string) "", (string) (len=32) "const _AnimalName = \"CatDogFish\"", (string) "", (string) (len=35) "var _AnimalMap = map[Animal]string{", @@ -56,7 +58,7 @@ (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=63) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal\", name)", + (string) (len=65) "\treturn Animal(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidAnimal)", (string) (len=1) "}", (string) "", (string) (len=31) "func (x Animal) Ptr() *Animal {", @@ -288,6 +290,8 @@ (string) (len=36) "\tCustom_prefix_AnotherLowerCaseStart", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidCases = errors.New(\"not a valid Cases\")", + (string) "", (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", (string) "", (string) (len=33) "var _CasesMap = map[Cases]string{", @@ -318,7 +322,7 @@ (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases\", name)", + (string) (len=63) "\treturn Cases(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidCases)", (string) (len=1) "}", (string) "", (string) (len=29) "func (x Cases) Ptr() *Cases {", @@ -558,6 +562,8 @@ (string) (len=21) "\tCustom_prefix_Yellow", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidColor = errors.New(\"not a valid Color\")", + (string) "", (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=33) "var _ColorMap = map[Color]string{", @@ -600,7 +606,7 @@ (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color\", name)", + (string) (len=63) "\treturn Color(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColor)", (string) (len=1) "}", (string) "", (string) (len=29) "func (x Color) Ptr() *Color {", @@ -841,6 +847,8 @@ (string) (len=21) "\tCustom_prefix_Yellow", (string) (len=1) ")", (string) "", + (string) (len=75) "var ErrInvalidColorWithComment = errors.New(\"not a valid ColorWithComment\")", + (string) "", (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", @@ -883,7 +891,7 @@ (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=83) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment\", name)", + (string) (len=85) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment)", (string) (len=1) "}", (string) "", (string) (len=51) "func (x ColorWithComment) Ptr() *ColorWithComment {", @@ -1124,6 +1132,8 @@ (string) (len=21) "\tCustom_prefix_Yellow", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment2 = errors.New(\"not a valid ColorWithComment2\")", + (string) "", (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", @@ -1166,7 +1176,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2\", name)", + (string) (len=87) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment2)", (string) (len=1) "}", (string) "", (string) (len=53) "func (x ColorWithComment2) Ptr() *ColorWithComment2 {", @@ -1414,6 +1424,8 @@ (string) (len=28) "\tCustom_prefix_RedOrangeBlue", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment3 = errors.New(\"not a valid ColorWithComment3\")", + (string) "", (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", (string) "", (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", @@ -1465,7 +1477,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3\", name)", + (string) (len=87) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment3)", (string) (len=1) "}", (string) "", (string) (len=53) "func (x ColorWithComment3) Ptr() *ColorWithComment3 {", @@ -1716,6 +1728,8 @@ (string) (len=24) "\tCustom_prefix_RedOrange", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment4 = errors.New(\"not a valid ColorWithComment4\")", + (string) "", (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", (string) "", (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", @@ -1764,7 +1778,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4\", name)", + (string) (len=87) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment4)", (string) (len=1) "}", (string) "", (string) (len=53) "func (x ColorWithComment4) Ptr() *ColorWithComment4 {", @@ -2020,6 +2034,8 @@ (string) (len=50) "\tCustom_prefix_E2P33 Enum64bit = iota + 8454967282", (string) (len=1) ")", (string) "", + (string) (len=61) "var ErrInvalidEnum64bit = errors.New(\"not a valid Enum64bit\")", + (string) "", (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", (string) "", (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", @@ -2086,7 +2102,7 @@ (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=69) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit\", name)", + (string) (len=71) "\treturn Enum64bit(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidEnum64bit)", (string) (len=1) "}", (string) "", (string) (len=37) "func (x Enum64bit) Ptr() *Enum64bit {", @@ -2322,6 +2338,8 @@ (string) (len=19) "\tCustom_prefix_Ford", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidModel = errors.New(\"not a valid Model\")", + (string) "", (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", (string) "", (string) (len=33) "var _ModelMap = map[Model]string{", @@ -2352,7 +2370,7 @@ (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model\", name)", + (string) (len=63) "\treturn Model(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidModel)", (string) (len=1) "}", (string) "", (string) (len=29) "func (x Model) Ptr() *Model {", @@ -2584,6 +2602,8 @@ (string) (len=44) "\tCustom_prefix_Էժան NonASCII = iota + -1", (string) (len=1) ")", (string) "", + (string) (len=59) "var ErrInvalidNonASCII = errors.New(\"not a valid NonASCII\")", + (string) "", (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", (string) "", (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", @@ -2614,7 +2634,7 @@ (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=67) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII\", name)", + (string) (len=69) "\treturn NonASCII(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidNonASCII)", (string) (len=1) "}", (string) "", (string) (len=35) "func (x NonASCII) Ptr() *NonASCII {", @@ -2854,6 +2874,8 @@ (string) (len=27) "\tCustom_prefix_EndingHyphen", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidSanitizing = errors.New(\"not a valid Sanitizing\")", + (string) "", (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", (string) "", (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", @@ -2896,7 +2918,7 @@ (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=71) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing\", name)", + (string) (len=73) "\treturn Sanitizing(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSanitizing)", (string) (len=1) "}", (string) "", (string) (len=39) "func (x Sanitizing) Ptr() *Sanitizing {", @@ -3128,6 +3150,8 @@ (string) (len=21) "\tCustom_prefix_MtnDew", (string) (len=1) ")", (string) "", + (string) (len=51) "var ErrInvalidSoda = errors.New(\"not a valid Soda\")", + (string) "", (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", (string) "", (string) (len=31) "var _SodaMap = map[Soda]string{", @@ -3158,7 +3182,7 @@ (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=59) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda\", name)", + (string) (len=61) "\treturn Soda(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSoda)", (string) (len=1) "}", (string) "", (string) (len=27) "func (x Soda) Ptr() *Soda {", @@ -3388,6 +3412,8 @@ (string) (len=22) "\tCustom_prefix_NextNum", (string) (len=1) ")", (string) "", + (string) (len=67) "var ErrInvalidStartNotZero = errors.New(\"not a valid StartNotZero\")", + (string) "", (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", (string) "", (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", @@ -3415,7 +3441,7 @@ (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=75) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero\", name)", + (string) (len=77) "\treturn StartNotZero(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidStartNotZero)", (string) (len=1) "}", (string) "", (string) (len=43) "func (x StartNotZero) Ptr() *StartNotZero {", @@ -3647,6 +3673,8 @@ (string) (len=39) "\tCustom_prefix_Here StringEnum = \"here\"", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidStringEnum = errors.New(\"not a valid StringEnum\")", + (string) "", (string) (len=44) "// String implements the Stringer interface.", (string) (len=37) "func (x StringEnum) String() string {", (string) (len=17) "\treturn string(x)", @@ -3669,7 +3697,7 @@ (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=72) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum\", name)", + (string) (len=74) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is %w\", name, ErrInvalidStringEnum)", (string) (len=1) "}", (string) "", (string) (len=39) "func (x StringEnum) Ptr() *StringEnum {", @@ -3731,6 +3759,108 @@ (string) (len=23) "\treturn x.String(), nil", (string) (len=1) "}", (string) "", + (string) (len=47) "var sqlIntStringEnumMap = map[int64]StringEnum{", + (string) (len=28) "\t1114: Custom_prefix_Random,", + (string) (len=28) "\t300: Custom_prefix_Values,", + (string) (len=26) "\t1: Custom_prefix_Here,", + (string) (len=1) "}", + (string) "", + (string) (len=49) "var sqlIntStringEnumValue = map[StringEnum]int64{", + (string) (len=28) "\tCustom_prefix_Random: 1114,", + (string) (len=27) "\tCustom_prefix_Values: 300,", + (string) (len=25) "\tCustom_prefix_Here: 1,", + (string) (len=1) "}", + (string) "", + (string) (len=60) "func lookupSqlIntStringEnum(val int64) (StringEnum, error) {", + (string) (len=34) "\tx, ok := sqlIntStringEnumMap[val]", + (string) (len=9) "\tif !ok {", + (string) (len=65) "\t\treturn x, fmt.Errorf(\"%v is not %w\", val, ErrInvalidStringEnum)", + (string) (len=2) "\t}", + (string) (len=14) "\treturn x, nil", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *StringEnum) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=21) "\t\t*x = StringEnum(\"\")", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=37) "\t\t*x, err = lookupSqlIntStringEnum(v)", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseStringEnum(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=68) "\t\tif val, verr := strconv.ParseInt(string(v), 10, 64); verr == nil {", + (string) (len=40) "\t\t\t*x, err = lookupSqlIntStringEnum(val)", + (string) (len=10) "\t\t} else {", + (string) (len=39) "\t\t\t// try parsing the value as a string", + (string) (len=39) "\t\t\t*x, err = ParseStringEnum(string(v))", + (string) (len=3) "\t\t}", + (string) (len=17) "\tcase StringEnum:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=44) "\t\t*x, err = lookupSqlIntStringEnum(int64(v))", + (string) (len=18) "\tcase *StringEnum:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=44) "\t\t*x, err = lookupSqlIntStringEnum(int64(v))", + (string) (len=13) "\tcase uint64:", + (string) (len=44) "\t\t*x, err = lookupSqlIntStringEnum(int64(v))", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", + (string) (len=3) "\t\t}", + (string) (len=45) "\t\t*x, err = lookupSqlIntStringEnum(int64(*v))", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", + (string) (len=3) "\t\t}", + (string) (len=45) "\t\t*x, err = lookupSqlIntStringEnum(int64(*v))", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=44) "\t\t*x, err = lookupSqlIntStringEnum(int64(v))", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", + (string) (len=3) "\t\t}", + (string) (len=45) "\t\t*x, err = lookupSqlIntStringEnum(int64(*v))", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", + (string) (len=3) "\t\t}", + (string) (len=45) "\t\t*x, err = lookupSqlIntStringEnum(int64(*v))", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", + (string) (len=3) "\t\t}", + (string) (len=45) "\t\t*x, err = lookupSqlIntStringEnum(int64(*v))", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseStringEnum(*v)", + (string) (len=9) "\tdefault:", + (string) (len=50) "\t\treturn errors.New(\"invalid type for StringEnum\")", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x StringEnum) Value() (driver.Value, error) {", + (string) (len=36) "\tval, ok := sqlIntStringEnumValue[x]", + (string) (len=9) "\tif !ok {", + (string) (len=34) "\t\treturn nil, ErrInvalidStringEnum", + (string) (len=2) "\t}", + (string) (len=23) "\treturn int64(val), nil", + (string) (len=1) "}", + (string) "", (string) (len=55) "// Set implements the Golang flag.Value interface func.", (string) (len=44) "func (x *StringEnum) Set(val string) error {", (string) (len=31) "\tv, err := ParseStringEnum(val)", diff --git a/generator/.snapshots/Test118ExampleFile-1.18 b/generator/.snapshots/Test118ExampleFile-1.18 index d51a06f9..fb83c200 100644 --- a/generator/.snapshots/Test118ExampleFile-1.18 +++ b/generator/.snapshots/Test118ExampleFile-1.18 @@ -1,4 +1,4 @@ -([]string) (len=164) { +([]string) (len=166) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -24,6 +24,8 @@ (string) (len=17) "\tChangeTypeDelete", (string) (len=1) ")", (string) "", + (string) (len=111) "var ErrInvalidChangeType = fmt.Errorf(\"not a valid ChangeType, try [%s]\", strings.Join(_ChangeTypeNames, \", \"))", + (string) "", (string) (len=44) "const _ChangeTypeName = \"CreateUpdateDelete\"", (string) "", (string) (len=32) "var _ChangeTypeNames = []string{", @@ -71,7 +73,7 @@ (string) (len=58) "\tif x, ok := _ChangeTypeValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=119) "\treturn ChangeType(0), fmt.Errorf(\"%s is not a valid ChangeType, try [%s]\", name, strings.Join(_ChangeTypeNames, \", \"))", + (string) (len=73) "\treturn ChangeType(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidChangeType)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", diff --git a/generator/.snapshots/Test118ExampleFile-og b/generator/.snapshots/Test118ExampleFile-og index 19817428..a6c6ecb5 100644 --- a/generator/.snapshots/Test118ExampleFile-og +++ b/generator/.snapshots/Test118ExampleFile-og @@ -1,4 +1,4 @@ -([]string) (len=2301) { +([]string) (len=2329) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -24,6 +24,8 @@ (string) (len=11) "\tAnimalFish", (string) (len=1) ")", (string) "", + (string) (len=99) "var ErrInvalidAnimal = fmt.Errorf(\"not a valid Animal, try [%s]\", strings.Join(_AnimalNames, \", \"))", + (string) "", (string) (len=32) "const _AnimalName = \"CatDogFish\"", (string) "", (string) (len=28) "var _AnimalNames = []string{", @@ -71,7 +73,7 @@ (string) (len=54) "\tif x, ok := _AnimalValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=107) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal, try [%s]\", name, strings.Join(_AnimalNames, \", \"))", + (string) (len=65) "\treturn Animal(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidAnimal)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -172,6 +174,8 @@ (string) (len=27) "\tCasesAnotherLowerCaseStart", (string) (len=1) ")", (string) "", + (string) (len=96) "var ErrInvalidCases = fmt.Errorf(\"not a valid Cases, try [%s]\", strings.Join(_CasesNames, \", \"))", + (string) "", (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", (string) "", (string) (len=27) "var _CasesNames = []string{", @@ -219,7 +223,7 @@ (string) (len=53) "\tif x, ok := _CasesValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=104) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases, try [%s]\", name, strings.Join(_CasesNames, \", \"))", + (string) (len=63) "\treturn Cases(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidCases)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -328,6 +332,8 @@ (string) (len=12) "\tColorYellow", (string) (len=1) ")", (string) "", + (string) (len=96) "var ErrInvalidColor = fmt.Errorf(\"not a valid Color, try [%s]\", strings.Join(_ColorNames, \", \"))", + (string) "", (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=27) "var _ColorNames = []string{", @@ -391,7 +397,7 @@ (string) (len=53) "\tif x, ok := _ColorValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=104) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color, try [%s]\", name, strings.Join(_ColorNames, \", \"))", + (string) (len=63) "\treturn Color(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColor)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -501,6 +507,8 @@ (string) (len=23) "\tColorWithCommentYellow", (string) (len=1) ")", (string) "", + (string) (len=129) "var ErrInvalidColorWithComment = fmt.Errorf(\"not a valid ColorWithComment, try [%s]\", strings.Join(_ColorWithCommentNames, \", \"))", + (string) "", (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=38) "var _ColorWithCommentNames = []string{", @@ -564,7 +572,7 @@ (string) (len=64) "\tif x, ok := _ColorWithCommentValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=137) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment, try [%s]\", name, strings.Join(_ColorWithCommentNames, \", \"))", + (string) (len=85) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -674,6 +682,8 @@ (string) (len=24) "\tColorWithComment2Yellow", (string) (len=1) ")", (string) "", + (string) (len=132) "var ErrInvalidColorWithComment2 = fmt.Errorf(\"not a valid ColorWithComment2, try [%s]\", strings.Join(_ColorWithComment2Names, \", \"))", + (string) "", (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=39) "var _ColorWithComment2Names = []string{", @@ -737,7 +747,7 @@ (string) (len=65) "\tif x, ok := _ColorWithComment2Value[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=140) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2, try [%s]\", name, strings.Join(_ColorWithComment2Names, \", \"))", + (string) (len=87) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment2)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -854,6 +864,8 @@ (string) (len=31) "\tColorWithComment3RedOrangeBlue", (string) (len=1) ")", (string) "", + (string) (len=132) "var ErrInvalidColorWithComment3 = fmt.Errorf(\"not a valid ColorWithComment3, try [%s]\", strings.Join(_ColorWithComment3Names, \", \"))", + (string) "", (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", (string) "", (string) (len=39) "var _ColorWithComment3Names = []string{", @@ -929,7 +941,7 @@ (string) (len=65) "\tif x, ok := _ColorWithComment3Value[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=140) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3, try [%s]\", name, strings.Join(_ColorWithComment3Names, \", \"))", + (string) (len=87) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment3)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1049,6 +1061,8 @@ (string) (len=27) "\tColorWithComment4RedOrange", (string) (len=1) ")", (string) "", + (string) (len=132) "var ErrInvalidColorWithComment4 = fmt.Errorf(\"not a valid ColorWithComment4, try [%s]\", strings.Join(_ColorWithComment4Names, \", \"))", + (string) "", (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", (string) "", (string) (len=39) "var _ColorWithComment4Names = []string{", @@ -1120,7 +1134,7 @@ (string) (len=65) "\tif x, ok := _ColorWithComment4Value[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=140) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4, try [%s]\", name, strings.Join(_ColorWithComment4Names, \", \"))", + (string) (len=87) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment4)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1245,6 +1259,8 @@ (string) (len=45) "\tEnum64bitE2P33 Enum64bit = iota + 8454967282", (string) (len=1) ")", (string) "", + (string) (len=108) "var ErrInvalidEnum64bit = fmt.Errorf(\"not a valid Enum64bit, try [%s]\", strings.Join(_Enum64bitNames, \", \"))", + (string) "", (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", (string) "", (string) (len=31) "var _Enum64bitNames = []string{", @@ -1340,7 +1356,7 @@ (string) (len=57) "\tif x, ok := _Enum64bitValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=116) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit, try [%s]\", name, strings.Join(_Enum64bitNames, \", \"))", + (string) (len=71) "\treturn Enum64bit(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidEnum64bit)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1445,6 +1461,8 @@ (string) (len=10) "\tModelFord", (string) (len=1) ")", (string) "", + (string) (len=96) "var ErrInvalidModel = fmt.Errorf(\"not a valid Model, try [%s]\", strings.Join(_ModelNames, \", \"))", + (string) "", (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", (string) "", (string) (len=27) "var _ModelNames = []string{", @@ -1492,7 +1510,7 @@ (string) (len=53) "\tif x, ok := _ModelValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=104) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model, try [%s]\", name, strings.Join(_ModelNames, \", \"))", + (string) (len=63) "\treturn Model(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidModel)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1593,6 +1611,8 @@ (string) (len=38) "\tNonASCIIԷժան NonASCII = iota + -1", (string) (len=1) ")", (string) "", + (string) (len=105) "var ErrInvalidNonASCII = fmt.Errorf(\"not a valid NonASCII, try [%s]\", strings.Join(_NonASCIINames, \", \"))", + (string) "", (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", (string) "", (string) (len=30) "var _NonASCIINames = []string{", @@ -1640,7 +1660,7 @@ (string) (len=56) "\tif x, ok := _NonASCIIValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=113) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII, try [%s]\", name, strings.Join(_NonASCIINames, \", \"))", + (string) (len=69) "\treturn NonASCII(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidNonASCII)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1749,6 +1769,8 @@ (string) (len=23) "\tSanitizingEndingHyphen", (string) (len=1) ")", (string) "", + (string) (len=111) "var ErrInvalidSanitizing = fmt.Errorf(\"not a valid Sanitizing, try [%s]\", strings.Join(_SanitizingNames, \", \"))", + (string) "", (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", (string) "", (string) (len=32) "var _SanitizingNames = []string{", @@ -1812,7 +1834,7 @@ (string) (len=58) "\tif x, ok := _SanitizingValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=119) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing, try [%s]\", name, strings.Join(_SanitizingNames, \", \"))", + (string) (len=73) "\treturn Sanitizing(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSanitizing)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1913,6 +1935,8 @@ (string) (len=11) "\tSodaMtnDew", (string) (len=1) ")", (string) "", + (string) (len=93) "var ErrInvalidSoda = fmt.Errorf(\"not a valid Soda, try [%s]\", strings.Join(_SodaNames, \", \"))", + (string) "", (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", (string) "", (string) (len=26) "var _SodaNames = []string{", @@ -1960,7 +1984,7 @@ (string) (len=52) "\tif x, ok := _SodaValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=101) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda, try [%s]\", name, strings.Join(_SodaNames, \", \"))", + (string) (len=61) "\treturn Soda(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSoda)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -2059,6 +2083,8 @@ (string) (len=20) "\tStartNotZeroNextNum", (string) (len=1) ")", (string) "", + (string) (len=117) "var ErrInvalidStartNotZero = fmt.Errorf(\"not a valid StartNotZero, try [%s]\", strings.Join(_StartNotZeroNames, \", \"))", + (string) "", (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", (string) "", (string) (len=34) "var _StartNotZeroNames = []string{", @@ -2102,7 +2128,7 @@ (string) (len=60) "\tif x, ok := _StartNotZeroValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=125) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero, try [%s]\", name, strings.Join(_StartNotZeroNames, \", \"))", + (string) (len=77) "\treturn StartNotZero(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidStartNotZero)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -2203,6 +2229,8 @@ (string) (len=35) "\tStringEnumHere StringEnum = \"here\"", (string) (len=1) ")", (string) "", + (string) (len=111) "var ErrInvalidStringEnum = fmt.Errorf(\"not a valid StringEnum, try [%s]\", strings.Join(_StringEnumNames, \", \"))", + (string) "", (string) (len=32) "var _StringEnumNames = []string{", (string) (len=26) "\tstring(StringEnumRandom),", (string) (len=26) "\tstring(StringEnumValues),", @@ -2242,7 +2270,7 @@ (string) (len=58) "\tif x, ok := _StringEnumValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=120) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum, try [%s]\", name, strings.Join(_StringEnumNames, \", \"))", + (string) (len=74) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is %w\", name, ErrInvalidStringEnum)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", diff --git a/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 b/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 index a7fc6280..cb205c20 100644 --- a/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 +++ b/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 @@ -1,4 +1,4 @@ -([]string) (len=178) { +([]string) (len=180) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -24,6 +24,8 @@ (string) (len=17) "\tChangeTypeDelete", (string) (len=1) ")", (string) "", + (string) (len=111) "var ErrInvalidChangeType = fmt.Errorf(\"not a valid ChangeType, try [%s]\", strings.Join(_ChangeTypeNames, \", \"))", + (string) "", (string) (len=44) "const _ChangeTypeName = \"createupdatedelete\"", (string) "", (string) (len=32) "var _ChangeTypeNames = []string{", @@ -71,7 +73,7 @@ (string) (len=58) "\tif x, ok := _ChangeTypeValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=119) "\treturn ChangeType(0), fmt.Errorf(\"%s is not a valid ChangeType, try [%s]\", name, strings.Join(_ChangeTypeNames, \", \"))", + (string) (len=73) "\treturn ChangeType(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidChangeType)", (string) (len=1) "}", (string) "", (string) (len=85) "// MustParseChangeType converts a string to a ChangeType, and panics if is not valid.", diff --git a/generator/.snapshots/Test118ExampleFileMoreOptions-og b/generator/.snapshots/Test118ExampleFileMoreOptions-og index 4959baff..c0973f73 100644 --- a/generator/.snapshots/Test118ExampleFileMoreOptions-og +++ b/generator/.snapshots/Test118ExampleFileMoreOptions-og @@ -1,4 +1,4 @@ -([]string) (len=2497) { +([]string) (len=2525) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -24,6 +24,8 @@ (string) (len=11) "\tAnimalFish", (string) (len=1) ")", (string) "", + (string) (len=99) "var ErrInvalidAnimal = fmt.Errorf(\"not a valid Animal, try [%s]\", strings.Join(_AnimalNames, \", \"))", + (string) "", (string) (len=32) "const _AnimalName = \"catdogfish\"", (string) "", (string) (len=28) "var _AnimalNames = []string{", @@ -71,7 +73,7 @@ (string) (len=54) "\tif x, ok := _AnimalValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=107) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal, try [%s]\", name, strings.Join(_AnimalNames, \", \"))", + (string) (len=65) "\treturn Animal(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidAnimal)", (string) (len=1) "}", (string) "", (string) (len=77) "// MustParseAnimal converts a string to a Animal, and panics if is not valid.", @@ -186,6 +188,8 @@ (string) (len=27) "\tCasesAnotherLowerCaseStart", (string) (len=1) ")", (string) "", + (string) (len=96) "var ErrInvalidCases = fmt.Errorf(\"not a valid Cases, try [%s]\", strings.Join(_CasesNames, \", \"))", + (string) "", (string) (len=64) "const _CasesName = \"test_lowertest_capitalanotherlowercasestart\"", (string) "", (string) (len=27) "var _CasesNames = []string{", @@ -233,7 +237,7 @@ (string) (len=53) "\tif x, ok := _CasesValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=104) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases, try [%s]\", name, strings.Join(_CasesNames, \", \"))", + (string) (len=63) "\treturn Cases(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidCases)", (string) (len=1) "}", (string) "", (string) (len=75) "// MustParseCases converts a string to a Cases, and panics if is not valid.", @@ -356,6 +360,8 @@ (string) (len=12) "\tColorYellow", (string) (len=1) ")", (string) "", + (string) (len=96) "var ErrInvalidColor = fmt.Errorf(\"not a valid Color, try [%s]\", strings.Join(_ColorNames, \", \"))", + (string) "", (string) (len=53) "const _ColorName = \"blackwhiteredgreenbluegreyyellow\"", (string) "", (string) (len=27) "var _ColorNames = []string{", @@ -419,7 +425,7 @@ (string) (len=53) "\tif x, ok := _ColorValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=104) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color, try [%s]\", name, strings.Join(_ColorNames, \", \"))", + (string) (len=63) "\treturn Color(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColor)", (string) (len=1) "}", (string) "", (string) (len=75) "// MustParseColor converts a string to a Color, and panics if is not valid.", @@ -543,6 +549,8 @@ (string) (len=23) "\tColorWithCommentYellow", (string) (len=1) ")", (string) "", + (string) (len=129) "var ErrInvalidColorWithComment = fmt.Errorf(\"not a valid ColorWithComment, try [%s]\", strings.Join(_ColorWithCommentNames, \", \"))", + (string) "", (string) (len=64) "const _ColorWithCommentName = \"blackwhiteredgreenbluegreyyellow\"", (string) "", (string) (len=38) "var _ColorWithCommentNames = []string{", @@ -606,7 +614,7 @@ (string) (len=64) "\tif x, ok := _ColorWithCommentValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=137) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment, try [%s]\", name, strings.Join(_ColorWithCommentNames, \", \"))", + (string) (len=85) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment)", (string) (len=1) "}", (string) "", (string) (len=97) "// MustParseColorWithComment converts a string to a ColorWithComment, and panics if is not valid.", @@ -730,6 +738,8 @@ (string) (len=24) "\tColorWithComment2Yellow", (string) (len=1) ")", (string) "", + (string) (len=132) "var ErrInvalidColorWithComment2 = fmt.Errorf(\"not a valid ColorWithComment2, try [%s]\", strings.Join(_ColorWithComment2Names, \", \"))", + (string) "", (string) (len=65) "const _ColorWithComment2Name = \"blackwhiteredgreenbluegreyyellow\"", (string) "", (string) (len=39) "var _ColorWithComment2Names = []string{", @@ -793,7 +803,7 @@ (string) (len=65) "\tif x, ok := _ColorWithComment2Value[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=140) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2, try [%s]\", name, strings.Join(_ColorWithComment2Names, \", \"))", + (string) (len=87) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment2)", (string) (len=1) "}", (string) "", (string) (len=99) "// MustParseColorWithComment2 converts a string to a ColorWithComment2, and panics if is not valid.", @@ -924,6 +934,8 @@ (string) (len=31) "\tColorWithComment3RedOrangeBlue", (string) (len=1) ")", (string) "", + (string) (len=132) "var ErrInvalidColorWithComment3 = fmt.Errorf(\"not a valid ColorWithComment3, try [%s]\", strings.Join(_ColorWithComment3Names, \", \"))", + (string) "", (string) (len=100) "const _ColorWithComment3Name = \"blackwhiteredgreenbluegreyyellowblue-greenred-orangered-orange-blue\"", (string) "", (string) (len=39) "var _ColorWithComment3Names = []string{", @@ -999,7 +1011,7 @@ (string) (len=65) "\tif x, ok := _ColorWithComment3Value[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=140) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3, try [%s]\", name, strings.Join(_ColorWithComment3Names, \", \"))", + (string) (len=87) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment3)", (string) (len=1) "}", (string) "", (string) (len=99) "// MustParseColorWithComment3 converts a string to a ColorWithComment3, and panics if is not valid.", @@ -1133,6 +1145,8 @@ (string) (len=27) "\tColorWithComment4RedOrange", (string) (len=1) ")", (string) "", + (string) (len=132) "var ErrInvalidColorWithComment4 = fmt.Errorf(\"not a valid ColorWithComment4, try [%s]\", strings.Join(_ColorWithComment4Names, \", \"))", + (string) "", (string) (len=85) "const _ColorWithComment4Name = \"blackwhiteredgreenbluegreyyellowblue-greenred-orange\"", (string) "", (string) (len=39) "var _ColorWithComment4Names = []string{", @@ -1204,7 +1218,7 @@ (string) (len=65) "\tif x, ok := _ColorWithComment4Value[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=140) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4, try [%s]\", name, strings.Join(_ColorWithComment4Names, \", \"))", + (string) (len=87) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment4)", (string) (len=1) "}", (string) "", (string) (len=99) "// MustParseColorWithComment4 converts a string to a ColorWithComment4, and panics if is not valid.", @@ -1343,6 +1357,8 @@ (string) (len=45) "\tEnum64bitE2P33 Enum64bit = iota + 8454967282", (string) (len=1) ")", (string) "", + (string) (len=108) "var ErrInvalidEnum64bit = fmt.Errorf(\"not a valid Enum64bit, try [%s]\", strings.Join(_Enum64bitNames, \", \"))", + (string) "", (string) (len=102) "const _Enum64bitName = \"unknowne2p15e2p16e2p17e2p18e2p19e2p20e2p21e2p22e2p23e2p28e2p30e2p31e2p32e2p33\"", (string) "", (string) (len=31) "var _Enum64bitNames = []string{", @@ -1438,7 +1454,7 @@ (string) (len=57) "\tif x, ok := _Enum64bitValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=116) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit, try [%s]\", name, strings.Join(_Enum64bitNames, \", \"))", + (string) (len=71) "\treturn Enum64bit(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidEnum64bit)", (string) (len=1) "}", (string) "", (string) (len=83) "// MustParseEnum64bit converts a string to a Enum64bit, and panics if is not valid.", @@ -1557,6 +1573,8 @@ (string) (len=10) "\tModelFord", (string) (len=1) ")", (string) "", + (string) (len=96) "var ErrInvalidModel = fmt.Errorf(\"not a valid Model, try [%s]\", strings.Join(_ModelNames, \", \"))", + (string) "", (string) (len=36) "const _ModelName = \"toyotachevyford\"", (string) "", (string) (len=27) "var _ModelNames = []string{", @@ -1604,7 +1622,7 @@ (string) (len=53) "\tif x, ok := _ModelValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=104) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model, try [%s]\", name, strings.Join(_ModelNames, \", \"))", + (string) (len=63) "\treturn Model(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidModel)", (string) (len=1) "}", (string) "", (string) (len=75) "// MustParseModel converts a string to a Model, and panics if is not valid.", @@ -1719,6 +1737,8 @@ (string) (len=38) "\tNonASCIIԷժան NonASCII = iota + -1", (string) (len=1) ")", (string) "", + (string) (len=105) "var ErrInvalidNonASCII = fmt.Errorf(\"not a valid NonASCII, try [%s]\", strings.Join(_NonASCIINames, \", \"))", + (string) "", (string) (len=50) "const _NonASCIIName = \"продам車庫էժան\"", (string) "", (string) (len=30) "var _NonASCIINames = []string{", @@ -1766,7 +1786,7 @@ (string) (len=56) "\tif x, ok := _NonASCIIValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=113) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII, try [%s]\", name, strings.Join(_NonASCIINames, \", \"))", + (string) (len=69) "\treturn NonASCII(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidNonASCII)", (string) (len=1) "}", (string) "", (string) (len=81) "// MustParseNonASCII converts a string to a NonASCII, and panics if is not valid.", @@ -1889,6 +1909,8 @@ (string) (len=23) "\tSanitizingEndingHyphen", (string) (len=1) ")", (string) "", + (string) (len=111) "var ErrInvalidSanitizing = fmt.Errorf(\"not a valid Sanitizing, try [%s]\", strings.Join(_SanitizingNames, \", \"))", + (string) "", (string) (len=112) "const _SanitizingName = \"test-hyphen-hyphenstart_underscorefirst0numberfirst123456789a123123-asdfending-hyphen-\"", (string) "", (string) (len=32) "var _SanitizingNames = []string{", @@ -1952,7 +1974,7 @@ (string) (len=58) "\tif x, ok := _SanitizingValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=119) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing, try [%s]\", name, strings.Join(_SanitizingNames, \", \"))", + (string) (len=73) "\treturn Sanitizing(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSanitizing)", (string) (len=1) "}", (string) "", (string) (len=85) "// MustParseSanitizing converts a string to a Sanitizing, and panics if is not valid.", @@ -2067,6 +2089,8 @@ (string) (len=11) "\tSodaMtnDew", (string) (len=1) ")", (string) "", + (string) (len=93) "var ErrInvalidSoda = fmt.Errorf(\"not a valid Soda, try [%s]\", strings.Join(_SodaNames, \", \"))", + (string) "", (string) (len=35) "const _SodaName = \"cokepepsimtndew\"", (string) "", (string) (len=26) "var _SodaNames = []string{", @@ -2114,7 +2138,7 @@ (string) (len=52) "\tif x, ok := _SodaValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=101) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda, try [%s]\", name, strings.Join(_SodaNames, \", \"))", + (string) (len=61) "\treturn Soda(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSoda)", (string) (len=1) "}", (string) "", (string) (len=73) "// MustParseSoda converts a string to a Soda, and panics if is not valid.", @@ -2227,6 +2251,8 @@ (string) (len=20) "\tStartNotZeroNextNum", (string) (len=1) ")", (string) "", + (string) (len=117) "var ErrInvalidStartNotZero = fmt.Errorf(\"not a valid StartNotZero, try [%s]\", strings.Join(_StartNotZeroNames, \", \"))", + (string) "", (string) (len=47) "const _StartNotZeroName = \"startwithnumnextnum\"", (string) "", (string) (len=34) "var _StartNotZeroNames = []string{", @@ -2270,7 +2296,7 @@ (string) (len=60) "\tif x, ok := _StartNotZeroValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=125) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero, try [%s]\", name, strings.Join(_StartNotZeroNames, \", \"))", + (string) (len=77) "\treturn StartNotZero(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidStartNotZero)", (string) (len=1) "}", (string) "", (string) (len=89) "// MustParseStartNotZero converts a string to a StartNotZero, and panics if is not valid.", @@ -2385,6 +2411,8 @@ (string) (len=35) "\tStringEnumHere StringEnum = \"here\"", (string) (len=1) ")", (string) "", + (string) (len=111) "var ErrInvalidStringEnum = fmt.Errorf(\"not a valid StringEnum, try [%s]\", strings.Join(_StringEnumNames, \", \"))", + (string) "", (string) (len=32) "var _StringEnumNames = []string{", (string) (len=26) "\tstring(StringEnumRandom),", (string) (len=26) "\tstring(StringEnumValues),", @@ -2424,7 +2452,7 @@ (string) (len=58) "\tif x, ok := _StringEnumValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=120) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum, try [%s]\", name, strings.Join(_StringEnumNames, \", \"))", + (string) (len=74) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is %w\", name, ErrInvalidStringEnum)", (string) (len=1) "}", (string) "", (string) (len=85) "// MustParseStringEnum converts a string to a StringEnum, and panics if is not valid.", diff --git a/generator/.snapshots/Test118NoPrefixExampleFile-1.18 b/generator/.snapshots/Test118NoPrefixExampleFile-1.18 index 1d0af22b..e6b37e93 100644 --- a/generator/.snapshots/Test118NoPrefixExampleFile-1.18 +++ b/generator/.snapshots/Test118NoPrefixExampleFile-1.18 @@ -1,4 +1,4 @@ -([]string) (len=88) { +([]string) (len=92) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -10,6 +10,8 @@ (string) (len=8) "import (", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", + (string) "", + (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -21,6 +23,8 @@ (string) (len=7) "\tDelete", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidChangeType = errors.New(\"not a valid ChangeType\")", + (string) "", (string) (len=44) "const _ChangeTypeName = \"CreateUpdateDelete\"", (string) "", (string) (len=43) "var _ChangeTypeMap = map[ChangeType]string{", @@ -51,7 +55,7 @@ (string) (len=41) "\tif x, ok := _ChangeTypeValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=71) "\treturn ChangeType(0), fmt.Errorf(\"%s is not a valid ChangeType\", name)", + (string) (len=73) "\treturn ChangeType(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidChangeType)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", diff --git a/generator/.snapshots/Test118NoPrefixExampleFile-og b/generator/.snapshots/Test118NoPrefixExampleFile-og index 8207acdf..17990e9b 100644 --- a/generator/.snapshots/Test118NoPrefixExampleFile-og +++ b/generator/.snapshots/Test118NoPrefixExampleFile-og @@ -1,4 +1,4 @@ -([]string) (len=1269) { +([]string) (len=1299) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -10,6 +10,8 @@ (string) (len=8) "import (", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", + (string) "", + (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -21,6 +23,8 @@ (string) (len=5) "\tFish", (string) (len=1) ")", (string) "", + (string) (len=55) "var ErrInvalidAnimal = errors.New(\"not a valid Animal\")", + (string) "", (string) (len=32) "const _AnimalName = \"CatDogFish\"", (string) "", (string) (len=35) "var _AnimalMap = map[Animal]string{", @@ -51,7 +55,7 @@ (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=63) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal\", name)", + (string) (len=65) "\treturn Animal(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidAnimal)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -96,6 +100,8 @@ (string) (len=22) "\tAnotherLowerCaseStart", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidCases = errors.New(\"not a valid Cases\")", + (string) "", (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", (string) "", (string) (len=33) "var _CasesMap = map[Cases]string{", @@ -126,7 +132,7 @@ (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases\", name)", + (string) (len=63) "\treturn Cases(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidCases)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -179,6 +185,8 @@ (string) (len=7) "\tYellow", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidColor = errors.New(\"not a valid Color\")", + (string) "", (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=33) "var _ColorMap = map[Color]string{", @@ -221,7 +229,7 @@ (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color\", name)", + (string) (len=63) "\treturn Color(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColor)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -275,6 +283,8 @@ (string) (len=7) "\tYellow", (string) (len=1) ")", (string) "", + (string) (len=75) "var ErrInvalidColorWithComment = errors.New(\"not a valid ColorWithComment\")", + (string) "", (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", @@ -317,7 +327,7 @@ (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=83) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment\", name)", + (string) (len=85) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -371,6 +381,8 @@ (string) (len=7) "\tYellow", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment2 = errors.New(\"not a valid ColorWithComment2\")", + (string) "", (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", @@ -413,7 +425,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2\", name)", + (string) (len=87) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment2)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -474,6 +486,8 @@ (string) (len=14) "\tRedOrangeBlue", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment3 = errors.New(\"not a valid ColorWithComment3\")", + (string) "", (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", (string) "", (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", @@ -525,7 +539,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3\", name)", + (string) (len=87) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment3)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -589,6 +603,8 @@ (string) (len=10) "\tRedOrange", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment4 = errors.New(\"not a valid ColorWithComment4\")", + (string) "", (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", (string) "", (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", @@ -637,7 +653,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4\", name)", + (string) (len=87) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment4)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -706,6 +722,8 @@ (string) (len=36) "\tE2P33 Enum64bit = iota + 8454967282", (string) (len=1) ")", (string) "", + (string) (len=61) "var ErrInvalidEnum64bit = errors.New(\"not a valid Enum64bit\")", + (string) "", (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", (string) "", (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", @@ -772,7 +790,7 @@ (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=69) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit\", name)", + (string) (len=71) "\treturn Enum64bit(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidEnum64bit)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -821,6 +839,8 @@ (string) (len=5) "\tFord", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidModel = errors.New(\"not a valid Model\")", + (string) "", (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", (string) "", (string) (len=33) "var _ModelMap = map[Model]string{", @@ -851,7 +871,7 @@ (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model\", name)", + (string) (len=63) "\treturn Model(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidModel)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -896,6 +916,8 @@ (string) (len=30) "\tԷժան NonASCII = iota + -1", (string) (len=1) ")", (string) "", + (string) (len=59) "var ErrInvalidNonASCII = errors.New(\"not a valid NonASCII\")", + (string) "", (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", (string) "", (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", @@ -926,7 +948,7 @@ (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=67) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII\", name)", + (string) (len=69) "\treturn NonASCII(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidNonASCII)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -979,6 +1001,8 @@ (string) (len=13) "\tEndingHyphen", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidSanitizing = errors.New(\"not a valid Sanitizing\")", + (string) "", (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", (string) "", (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", @@ -1021,7 +1045,7 @@ (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=71) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing\", name)", + (string) (len=73) "\treturn Sanitizing(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSanitizing)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1066,6 +1090,8 @@ (string) (len=7) "\tMtnDew", (string) (len=1) ")", (string) "", + (string) (len=51) "var ErrInvalidSoda = errors.New(\"not a valid Soda\")", + (string) "", (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", (string) "", (string) (len=31) "var _SodaMap = map[Soda]string{", @@ -1096,7 +1122,7 @@ (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=59) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda\", name)", + (string) (len=61) "\treturn Soda(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSoda)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1139,6 +1165,8 @@ (string) (len=8) "\tNextNum", (string) (len=1) ")", (string) "", + (string) (len=67) "var ErrInvalidStartNotZero = errors.New(\"not a valid StartNotZero\")", + (string) "", (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", (string) "", (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", @@ -1166,7 +1194,7 @@ (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=75) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero\", name)", + (string) (len=77) "\treturn StartNotZero(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidStartNotZero)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1211,6 +1239,8 @@ (string) (len=25) "\tHere StringEnum = \"here\"", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidStringEnum = errors.New(\"not a valid StringEnum\")", + (string) "", (string) (len=44) "// String implements the Stringer interface.", (string) (len=37) "func (x StringEnum) String() string {", (string) (len=17) "\treturn string(x)", @@ -1233,7 +1263,7 @@ (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=72) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum\", name)", + (string) (len=74) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is %w\", name, ErrInvalidStringEnum)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", diff --git a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-1.18 b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-1.18 index 1d0af22b..e6b37e93 100644 --- a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-1.18 +++ b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-1.18 @@ -1,4 +1,4 @@ -([]string) (len=88) { +([]string) (len=92) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -10,6 +10,8 @@ (string) (len=8) "import (", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", + (string) "", + (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -21,6 +23,8 @@ (string) (len=7) "\tDelete", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidChangeType = errors.New(\"not a valid ChangeType\")", + (string) "", (string) (len=44) "const _ChangeTypeName = \"CreateUpdateDelete\"", (string) "", (string) (len=43) "var _ChangeTypeMap = map[ChangeType]string{", @@ -51,7 +55,7 @@ (string) (len=41) "\tif x, ok := _ChangeTypeValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=71) "\treturn ChangeType(0), fmt.Errorf(\"%s is not a valid ChangeType\", name)", + (string) (len=73) "\treturn ChangeType(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidChangeType)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", diff --git a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og index 9eeb1ec1..d4b375f5 100644 --- a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og +++ b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og @@ -1,4 +1,4 @@ -([]string) (len=1269) { +([]string) (len=1299) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -10,6 +10,8 @@ (string) (len=8) "import (", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", + (string) "", + (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -21,6 +23,8 @@ (string) (len=5) "\tFish", (string) (len=1) ")", (string) "", + (string) (len=55) "var ErrInvalidAnimal = errors.New(\"not a valid Animal\")", + (string) "", (string) (len=32) "const _AnimalName = \"CatDogFish\"", (string) "", (string) (len=35) "var _AnimalMap = map[Animal]string{", @@ -51,7 +55,7 @@ (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=63) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal\", name)", + (string) (len=65) "\treturn Animal(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidAnimal)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -96,6 +100,8 @@ (string) (len=22) "\tAnotherLowerCaseStart", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidCases = errors.New(\"not a valid Cases\")", + (string) "", (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", (string) "", (string) (len=33) "var _CasesMap = map[Cases]string{", @@ -126,7 +132,7 @@ (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases\", name)", + (string) (len=63) "\treturn Cases(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidCases)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -179,6 +185,8 @@ (string) (len=7) "\tYellow", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidColor = errors.New(\"not a valid Color\")", + (string) "", (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=33) "var _ColorMap = map[Color]string{", @@ -221,7 +229,7 @@ (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color\", name)", + (string) (len=63) "\treturn Color(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColor)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -275,6 +283,8 @@ (string) (len=7) "\tYellow", (string) (len=1) ")", (string) "", + (string) (len=75) "var ErrInvalidColorWithComment = errors.New(\"not a valid ColorWithComment\")", + (string) "", (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", @@ -317,7 +327,7 @@ (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=83) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment\", name)", + (string) (len=85) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -371,6 +381,8 @@ (string) (len=7) "\tYellow", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment2 = errors.New(\"not a valid ColorWithComment2\")", + (string) "", (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", @@ -413,7 +425,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2\", name)", + (string) (len=87) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment2)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -474,6 +486,8 @@ (string) (len=14) "\tRedOrangeBlue", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment3 = errors.New(\"not a valid ColorWithComment3\")", + (string) "", (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", (string) "", (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", @@ -525,7 +539,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3\", name)", + (string) (len=87) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment3)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -589,6 +603,8 @@ (string) (len=10) "\tRedOrange", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment4 = errors.New(\"not a valid ColorWithComment4\")", + (string) "", (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", (string) "", (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", @@ -637,7 +653,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4\", name)", + (string) (len=87) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment4)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -706,6 +722,8 @@ (string) (len=36) "\tE2P33 Enum64bit = iota + 8454967282", (string) (len=1) ")", (string) "", + (string) (len=61) "var ErrInvalidEnum64bit = errors.New(\"not a valid Enum64bit\")", + (string) "", (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", (string) "", (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", @@ -772,7 +790,7 @@ (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=69) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit\", name)", + (string) (len=71) "\treturn Enum64bit(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidEnum64bit)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -821,6 +839,8 @@ (string) (len=5) "\tFord", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidModel = errors.New(\"not a valid Model\")", + (string) "", (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", (string) "", (string) (len=33) "var _ModelMap = map[Model]string{", @@ -851,7 +871,7 @@ (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model\", name)", + (string) (len=63) "\treturn Model(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidModel)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -896,6 +916,8 @@ (string) (len=30) "\tԷժան NonASCII = iota + -1", (string) (len=1) ")", (string) "", + (string) (len=59) "var ErrInvalidNonASCII = errors.New(\"not a valid NonASCII\")", + (string) "", (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", (string) "", (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", @@ -926,7 +948,7 @@ (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=67) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII\", name)", + (string) (len=69) "\treturn NonASCII(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidNonASCII)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -979,6 +1001,8 @@ (string) (len=13) "\tEndingHyphen", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidSanitizing = errors.New(\"not a valid Sanitizing\")", + (string) "", (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", (string) "", (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", @@ -1021,7 +1045,7 @@ (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=71) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing\", name)", + (string) (len=73) "\treturn Sanitizing(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSanitizing)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1066,6 +1090,8 @@ (string) (len=7) "\tMtnDew", (string) (len=1) ")", (string) "", + (string) (len=51) "var ErrInvalidSoda = errors.New(\"not a valid Soda\")", + (string) "", (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", (string) "", (string) (len=31) "var _SodaMap = map[Soda]string{", @@ -1096,7 +1122,7 @@ (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=59) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda\", name)", + (string) (len=61) "\treturn Soda(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSoda)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1139,6 +1165,8 @@ (string) (len=8) "\tNextNum", (string) (len=1) ")", (string) "", + (string) (len=67) "var ErrInvalidStartNotZero = errors.New(\"not a valid StartNotZero\")", + (string) "", (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", (string) "", (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", @@ -1166,7 +1194,7 @@ (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=75) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero\", name)", + (string) (len=77) "\treturn StartNotZero(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidStartNotZero)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1211,6 +1239,8 @@ (string) (len=25) "\tHere StringEnum = \"here\"", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidStringEnum = errors.New(\"not a valid StringEnum\")", + (string) "", (string) (len=44) "// String implements the Stringer interface.", (string) (len=37) "func (x StringEnum) String() string {", (string) (len=17) "\treturn string(x)", @@ -1233,7 +1263,7 @@ (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=72) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum\", name)", + (string) (len=74) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is %w\", name, ErrInvalidStringEnum)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", diff --git a/generator/.snapshots/TestCustomPrefixExampleFile b/generator/.snapshots/TestCustomPrefixExampleFile index 52e8e9c5..37474107 100644 --- a/generator/.snapshots/TestCustomPrefixExampleFile +++ b/generator/.snapshots/TestCustomPrefixExampleFile @@ -1,4 +1,4 @@ -([]string) (len=3841) { +([]string) (len=3971) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -26,6 +26,8 @@ (string) (len=19) "\tCustom_prefix_Fish", (string) (len=1) ")", (string) "", + (string) (len=55) "var ErrInvalidAnimal = errors.New(\"not a valid Animal\")", + (string) "", (string) (len=32) "const _AnimalName = \"CatDogFish\"", (string) "", (string) (len=35) "var _AnimalMap = map[Animal]string{", @@ -56,7 +58,7 @@ (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=63) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal\", name)", + (string) (len=65) "\treturn Animal(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidAnimal)", (string) (len=1) "}", (string) "", (string) (len=31) "func (x Animal) Ptr() *Animal {", @@ -288,6 +290,8 @@ (string) (len=36) "\tCustom_prefix_AnotherLowerCaseStart", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidCases = errors.New(\"not a valid Cases\")", + (string) "", (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", (string) "", (string) (len=33) "var _CasesMap = map[Cases]string{", @@ -318,7 +322,7 @@ (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases\", name)", + (string) (len=63) "\treturn Cases(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidCases)", (string) (len=1) "}", (string) "", (string) (len=29) "func (x Cases) Ptr() *Cases {", @@ -558,6 +562,8 @@ (string) (len=21) "\tCustom_prefix_Yellow", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidColor = errors.New(\"not a valid Color\")", + (string) "", (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=33) "var _ColorMap = map[Color]string{", @@ -600,7 +606,7 @@ (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color\", name)", + (string) (len=63) "\treturn Color(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColor)", (string) (len=1) "}", (string) "", (string) (len=29) "func (x Color) Ptr() *Color {", @@ -841,6 +847,8 @@ (string) (len=21) "\tCustom_prefix_Yellow", (string) (len=1) ")", (string) "", + (string) (len=75) "var ErrInvalidColorWithComment = errors.New(\"not a valid ColorWithComment\")", + (string) "", (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", @@ -883,7 +891,7 @@ (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=83) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment\", name)", + (string) (len=85) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment)", (string) (len=1) "}", (string) "", (string) (len=51) "func (x ColorWithComment) Ptr() *ColorWithComment {", @@ -1124,6 +1132,8 @@ (string) (len=21) "\tCustom_prefix_Yellow", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment2 = errors.New(\"not a valid ColorWithComment2\")", + (string) "", (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", @@ -1166,7 +1176,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2\", name)", + (string) (len=87) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment2)", (string) (len=1) "}", (string) "", (string) (len=53) "func (x ColorWithComment2) Ptr() *ColorWithComment2 {", @@ -1414,6 +1424,8 @@ (string) (len=28) "\tCustom_prefix_RedOrangeBlue", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment3 = errors.New(\"not a valid ColorWithComment3\")", + (string) "", (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", (string) "", (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", @@ -1465,7 +1477,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3\", name)", + (string) (len=87) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment3)", (string) (len=1) "}", (string) "", (string) (len=53) "func (x ColorWithComment3) Ptr() *ColorWithComment3 {", @@ -1716,6 +1728,8 @@ (string) (len=24) "\tCustom_prefix_RedOrange", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment4 = errors.New(\"not a valid ColorWithComment4\")", + (string) "", (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", (string) "", (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", @@ -1764,7 +1778,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4\", name)", + (string) (len=87) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment4)", (string) (len=1) "}", (string) "", (string) (len=53) "func (x ColorWithComment4) Ptr() *ColorWithComment4 {", @@ -2020,6 +2034,8 @@ (string) (len=50) "\tCustom_prefix_E2P33 Enum64bit = iota + 8454967282", (string) (len=1) ")", (string) "", + (string) (len=61) "var ErrInvalidEnum64bit = errors.New(\"not a valid Enum64bit\")", + (string) "", (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", (string) "", (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", @@ -2086,7 +2102,7 @@ (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=69) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit\", name)", + (string) (len=71) "\treturn Enum64bit(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidEnum64bit)", (string) (len=1) "}", (string) "", (string) (len=37) "func (x Enum64bit) Ptr() *Enum64bit {", @@ -2322,6 +2338,8 @@ (string) (len=19) "\tCustom_prefix_Ford", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidModel = errors.New(\"not a valid Model\")", + (string) "", (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", (string) "", (string) (len=33) "var _ModelMap = map[Model]string{", @@ -2352,7 +2370,7 @@ (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model\", name)", + (string) (len=63) "\treturn Model(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidModel)", (string) (len=1) "}", (string) "", (string) (len=29) "func (x Model) Ptr() *Model {", @@ -2584,6 +2602,8 @@ (string) (len=44) "\tCustom_prefix_Էժան NonASCII = iota + -1", (string) (len=1) ")", (string) "", + (string) (len=59) "var ErrInvalidNonASCII = errors.New(\"not a valid NonASCII\")", + (string) "", (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", (string) "", (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", @@ -2614,7 +2634,7 @@ (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=67) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII\", name)", + (string) (len=69) "\treturn NonASCII(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidNonASCII)", (string) (len=1) "}", (string) "", (string) (len=35) "func (x NonASCII) Ptr() *NonASCII {", @@ -2854,6 +2874,8 @@ (string) (len=27) "\tCustom_prefix_EndingHyphen", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidSanitizing = errors.New(\"not a valid Sanitizing\")", + (string) "", (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", (string) "", (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", @@ -2896,7 +2918,7 @@ (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=71) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing\", name)", + (string) (len=73) "\treturn Sanitizing(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSanitizing)", (string) (len=1) "}", (string) "", (string) (len=39) "func (x Sanitizing) Ptr() *Sanitizing {", @@ -3128,6 +3150,8 @@ (string) (len=21) "\tCustom_prefix_MtnDew", (string) (len=1) ")", (string) "", + (string) (len=51) "var ErrInvalidSoda = errors.New(\"not a valid Soda\")", + (string) "", (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", (string) "", (string) (len=31) "var _SodaMap = map[Soda]string{", @@ -3158,7 +3182,7 @@ (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=59) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda\", name)", + (string) (len=61) "\treturn Soda(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSoda)", (string) (len=1) "}", (string) "", (string) (len=27) "func (x Soda) Ptr() *Soda {", @@ -3388,6 +3412,8 @@ (string) (len=22) "\tCustom_prefix_NextNum", (string) (len=1) ")", (string) "", + (string) (len=67) "var ErrInvalidStartNotZero = errors.New(\"not a valid StartNotZero\")", + (string) "", (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", (string) "", (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", @@ -3415,7 +3441,7 @@ (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=75) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero\", name)", + (string) (len=77) "\treturn StartNotZero(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidStartNotZero)", (string) (len=1) "}", (string) "", (string) (len=43) "func (x StartNotZero) Ptr() *StartNotZero {", @@ -3647,6 +3673,8 @@ (string) (len=39) "\tCustom_prefix_Here StringEnum = \"here\"", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidStringEnum = errors.New(\"not a valid StringEnum\")", + (string) "", (string) (len=44) "// String implements the Stringer interface.", (string) (len=37) "func (x StringEnum) String() string {", (string) (len=17) "\treturn string(x)", @@ -3669,7 +3697,7 @@ (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=72) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum\", name)", + (string) (len=74) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is %w\", name, ErrInvalidStringEnum)", (string) (len=1) "}", (string) "", (string) (len=39) "func (x StringEnum) Ptr() *StringEnum {", @@ -3731,6 +3759,108 @@ (string) (len=23) "\treturn x.String(), nil", (string) (len=1) "}", (string) "", + (string) (len=47) "var sqlIntStringEnumMap = map[int64]StringEnum{", + (string) (len=28) "\t1114: Custom_prefix_Random,", + (string) (len=28) "\t300: Custom_prefix_Values,", + (string) (len=26) "\t1: Custom_prefix_Here,", + (string) (len=1) "}", + (string) "", + (string) (len=49) "var sqlIntStringEnumValue = map[StringEnum]int64{", + (string) (len=28) "\tCustom_prefix_Random: 1114,", + (string) (len=27) "\tCustom_prefix_Values: 300,", + (string) (len=25) "\tCustom_prefix_Here: 1,", + (string) (len=1) "}", + (string) "", + (string) (len=60) "func lookupSqlIntStringEnum(val int64) (StringEnum, error) {", + (string) (len=34) "\tx, ok := sqlIntStringEnumMap[val]", + (string) (len=9) "\tif !ok {", + (string) (len=65) "\t\treturn x, fmt.Errorf(\"%v is not %w\", val, ErrInvalidStringEnum)", + (string) (len=2) "\t}", + (string) (len=14) "\treturn x, nil", + (string) (len=1) "}", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *StringEnum) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=21) "\t\t*x = StringEnum(\"\")", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=37) "\t\t*x, err = lookupSqlIntStringEnum(v)", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseStringEnum(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=68) "\t\tif val, verr := strconv.ParseInt(string(v), 10, 64); verr == nil {", + (string) (len=40) "\t\t\t*x, err = lookupSqlIntStringEnum(val)", + (string) (len=10) "\t\t} else {", + (string) (len=39) "\t\t\t// try parsing the value as a string", + (string) (len=39) "\t\t\t*x, err = ParseStringEnum(string(v))", + (string) (len=3) "\t\t}", + (string) (len=17) "\tcase StringEnum:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=44) "\t\t*x, err = lookupSqlIntStringEnum(int64(v))", + (string) (len=18) "\tcase *StringEnum:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=44) "\t\t*x, err = lookupSqlIntStringEnum(int64(v))", + (string) (len=13) "\tcase uint64:", + (string) (len=44) "\t\t*x, err = lookupSqlIntStringEnum(int64(v))", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", + (string) (len=3) "\t\t}", + (string) (len=45) "\t\t*x, err = lookupSqlIntStringEnum(int64(*v))", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", + (string) (len=3) "\t\t}", + (string) (len=45) "\t\t*x, err = lookupSqlIntStringEnum(int64(*v))", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=44) "\t\t*x, err = lookupSqlIntStringEnum(int64(v))", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", + (string) (len=3) "\t\t}", + (string) (len=45) "\t\t*x, err = lookupSqlIntStringEnum(int64(*v))", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", + (string) (len=3) "\t\t}", + (string) (len=45) "\t\t*x, err = lookupSqlIntStringEnum(int64(*v))", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", + (string) (len=3) "\t\t}", + (string) (len=45) "\t\t*x, err = lookupSqlIntStringEnum(int64(*v))", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseStringEnum(*v)", + (string) (len=9) "\tdefault:", + (string) (len=50) "\t\treturn errors.New(\"invalid type for StringEnum\")", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x StringEnum) Value() (driver.Value, error) {", + (string) (len=36) "\tval, ok := sqlIntStringEnumValue[x]", + (string) (len=9) "\tif !ok {", + (string) (len=34) "\t\treturn nil, ErrInvalidStringEnum", + (string) (len=2) "\t}", + (string) (len=23) "\treturn int64(val), nil", + (string) (len=1) "}", + (string) "", (string) (len=55) "// Set implements the Golang flag.Value interface func.", (string) (len=44) "func (x *StringEnum) Set(val string) error {", (string) (len=31) "\tv, err := ParseStringEnum(val)", diff --git a/generator/.snapshots/TestExampleFile b/generator/.snapshots/TestExampleFile index 19817428..a6c6ecb5 100644 --- a/generator/.snapshots/TestExampleFile +++ b/generator/.snapshots/TestExampleFile @@ -1,4 +1,4 @@ -([]string) (len=2301) { +([]string) (len=2329) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -24,6 +24,8 @@ (string) (len=11) "\tAnimalFish", (string) (len=1) ")", (string) "", + (string) (len=99) "var ErrInvalidAnimal = fmt.Errorf(\"not a valid Animal, try [%s]\", strings.Join(_AnimalNames, \", \"))", + (string) "", (string) (len=32) "const _AnimalName = \"CatDogFish\"", (string) "", (string) (len=28) "var _AnimalNames = []string{", @@ -71,7 +73,7 @@ (string) (len=54) "\tif x, ok := _AnimalValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=107) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal, try [%s]\", name, strings.Join(_AnimalNames, \", \"))", + (string) (len=65) "\treturn Animal(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidAnimal)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -172,6 +174,8 @@ (string) (len=27) "\tCasesAnotherLowerCaseStart", (string) (len=1) ")", (string) "", + (string) (len=96) "var ErrInvalidCases = fmt.Errorf(\"not a valid Cases, try [%s]\", strings.Join(_CasesNames, \", \"))", + (string) "", (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", (string) "", (string) (len=27) "var _CasesNames = []string{", @@ -219,7 +223,7 @@ (string) (len=53) "\tif x, ok := _CasesValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=104) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases, try [%s]\", name, strings.Join(_CasesNames, \", \"))", + (string) (len=63) "\treturn Cases(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidCases)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -328,6 +332,8 @@ (string) (len=12) "\tColorYellow", (string) (len=1) ")", (string) "", + (string) (len=96) "var ErrInvalidColor = fmt.Errorf(\"not a valid Color, try [%s]\", strings.Join(_ColorNames, \", \"))", + (string) "", (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=27) "var _ColorNames = []string{", @@ -391,7 +397,7 @@ (string) (len=53) "\tif x, ok := _ColorValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=104) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color, try [%s]\", name, strings.Join(_ColorNames, \", \"))", + (string) (len=63) "\treturn Color(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColor)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -501,6 +507,8 @@ (string) (len=23) "\tColorWithCommentYellow", (string) (len=1) ")", (string) "", + (string) (len=129) "var ErrInvalidColorWithComment = fmt.Errorf(\"not a valid ColorWithComment, try [%s]\", strings.Join(_ColorWithCommentNames, \", \"))", + (string) "", (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=38) "var _ColorWithCommentNames = []string{", @@ -564,7 +572,7 @@ (string) (len=64) "\tif x, ok := _ColorWithCommentValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=137) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment, try [%s]\", name, strings.Join(_ColorWithCommentNames, \", \"))", + (string) (len=85) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -674,6 +682,8 @@ (string) (len=24) "\tColorWithComment2Yellow", (string) (len=1) ")", (string) "", + (string) (len=132) "var ErrInvalidColorWithComment2 = fmt.Errorf(\"not a valid ColorWithComment2, try [%s]\", strings.Join(_ColorWithComment2Names, \", \"))", + (string) "", (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=39) "var _ColorWithComment2Names = []string{", @@ -737,7 +747,7 @@ (string) (len=65) "\tif x, ok := _ColorWithComment2Value[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=140) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2, try [%s]\", name, strings.Join(_ColorWithComment2Names, \", \"))", + (string) (len=87) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment2)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -854,6 +864,8 @@ (string) (len=31) "\tColorWithComment3RedOrangeBlue", (string) (len=1) ")", (string) "", + (string) (len=132) "var ErrInvalidColorWithComment3 = fmt.Errorf(\"not a valid ColorWithComment3, try [%s]\", strings.Join(_ColorWithComment3Names, \", \"))", + (string) "", (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", (string) "", (string) (len=39) "var _ColorWithComment3Names = []string{", @@ -929,7 +941,7 @@ (string) (len=65) "\tif x, ok := _ColorWithComment3Value[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=140) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3, try [%s]\", name, strings.Join(_ColorWithComment3Names, \", \"))", + (string) (len=87) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment3)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1049,6 +1061,8 @@ (string) (len=27) "\tColorWithComment4RedOrange", (string) (len=1) ")", (string) "", + (string) (len=132) "var ErrInvalidColorWithComment4 = fmt.Errorf(\"not a valid ColorWithComment4, try [%s]\", strings.Join(_ColorWithComment4Names, \", \"))", + (string) "", (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", (string) "", (string) (len=39) "var _ColorWithComment4Names = []string{", @@ -1120,7 +1134,7 @@ (string) (len=65) "\tif x, ok := _ColorWithComment4Value[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=140) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4, try [%s]\", name, strings.Join(_ColorWithComment4Names, \", \"))", + (string) (len=87) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment4)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1245,6 +1259,8 @@ (string) (len=45) "\tEnum64bitE2P33 Enum64bit = iota + 8454967282", (string) (len=1) ")", (string) "", + (string) (len=108) "var ErrInvalidEnum64bit = fmt.Errorf(\"not a valid Enum64bit, try [%s]\", strings.Join(_Enum64bitNames, \", \"))", + (string) "", (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", (string) "", (string) (len=31) "var _Enum64bitNames = []string{", @@ -1340,7 +1356,7 @@ (string) (len=57) "\tif x, ok := _Enum64bitValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=116) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit, try [%s]\", name, strings.Join(_Enum64bitNames, \", \"))", + (string) (len=71) "\treturn Enum64bit(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidEnum64bit)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1445,6 +1461,8 @@ (string) (len=10) "\tModelFord", (string) (len=1) ")", (string) "", + (string) (len=96) "var ErrInvalidModel = fmt.Errorf(\"not a valid Model, try [%s]\", strings.Join(_ModelNames, \", \"))", + (string) "", (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", (string) "", (string) (len=27) "var _ModelNames = []string{", @@ -1492,7 +1510,7 @@ (string) (len=53) "\tif x, ok := _ModelValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=104) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model, try [%s]\", name, strings.Join(_ModelNames, \", \"))", + (string) (len=63) "\treturn Model(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidModel)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1593,6 +1611,8 @@ (string) (len=38) "\tNonASCIIԷժան NonASCII = iota + -1", (string) (len=1) ")", (string) "", + (string) (len=105) "var ErrInvalidNonASCII = fmt.Errorf(\"not a valid NonASCII, try [%s]\", strings.Join(_NonASCIINames, \", \"))", + (string) "", (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", (string) "", (string) (len=30) "var _NonASCIINames = []string{", @@ -1640,7 +1660,7 @@ (string) (len=56) "\tif x, ok := _NonASCIIValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=113) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII, try [%s]\", name, strings.Join(_NonASCIINames, \", \"))", + (string) (len=69) "\treturn NonASCII(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidNonASCII)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1749,6 +1769,8 @@ (string) (len=23) "\tSanitizingEndingHyphen", (string) (len=1) ")", (string) "", + (string) (len=111) "var ErrInvalidSanitizing = fmt.Errorf(\"not a valid Sanitizing, try [%s]\", strings.Join(_SanitizingNames, \", \"))", + (string) "", (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", (string) "", (string) (len=32) "var _SanitizingNames = []string{", @@ -1812,7 +1834,7 @@ (string) (len=58) "\tif x, ok := _SanitizingValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=119) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing, try [%s]\", name, strings.Join(_SanitizingNames, \", \"))", + (string) (len=73) "\treturn Sanitizing(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSanitizing)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1913,6 +1935,8 @@ (string) (len=11) "\tSodaMtnDew", (string) (len=1) ")", (string) "", + (string) (len=93) "var ErrInvalidSoda = fmt.Errorf(\"not a valid Soda, try [%s]\", strings.Join(_SodaNames, \", \"))", + (string) "", (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", (string) "", (string) (len=26) "var _SodaNames = []string{", @@ -1960,7 +1984,7 @@ (string) (len=52) "\tif x, ok := _SodaValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=101) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda, try [%s]\", name, strings.Join(_SodaNames, \", \"))", + (string) (len=61) "\treturn Soda(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSoda)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -2059,6 +2083,8 @@ (string) (len=20) "\tStartNotZeroNextNum", (string) (len=1) ")", (string) "", + (string) (len=117) "var ErrInvalidStartNotZero = fmt.Errorf(\"not a valid StartNotZero, try [%s]\", strings.Join(_StartNotZeroNames, \", \"))", + (string) "", (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", (string) "", (string) (len=34) "var _StartNotZeroNames = []string{", @@ -2102,7 +2128,7 @@ (string) (len=60) "\tif x, ok := _StartNotZeroValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=125) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero, try [%s]\", name, strings.Join(_StartNotZeroNames, \", \"))", + (string) (len=77) "\treturn StartNotZero(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidStartNotZero)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -2203,6 +2229,8 @@ (string) (len=35) "\tStringEnumHere StringEnum = \"here\"", (string) (len=1) ")", (string) "", + (string) (len=111) "var ErrInvalidStringEnum = fmt.Errorf(\"not a valid StringEnum, try [%s]\", strings.Join(_StringEnumNames, \", \"))", + (string) "", (string) (len=32) "var _StringEnumNames = []string{", (string) (len=26) "\tstring(StringEnumRandom),", (string) (len=26) "\tstring(StringEnumValues),", @@ -2242,7 +2270,7 @@ (string) (len=58) "\tif x, ok := _StringEnumValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=120) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum, try [%s]\", name, strings.Join(_StringEnumNames, \", \"))", + (string) (len=74) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is %w\", name, ErrInvalidStringEnum)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", diff --git a/generator/.snapshots/TestExampleFileMoreOptions b/generator/.snapshots/TestExampleFileMoreOptions index 4959baff..c0973f73 100644 --- a/generator/.snapshots/TestExampleFileMoreOptions +++ b/generator/.snapshots/TestExampleFileMoreOptions @@ -1,4 +1,4 @@ -([]string) (len=2497) { +([]string) (len=2525) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -24,6 +24,8 @@ (string) (len=11) "\tAnimalFish", (string) (len=1) ")", (string) "", + (string) (len=99) "var ErrInvalidAnimal = fmt.Errorf(\"not a valid Animal, try [%s]\", strings.Join(_AnimalNames, \", \"))", + (string) "", (string) (len=32) "const _AnimalName = \"catdogfish\"", (string) "", (string) (len=28) "var _AnimalNames = []string{", @@ -71,7 +73,7 @@ (string) (len=54) "\tif x, ok := _AnimalValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=107) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal, try [%s]\", name, strings.Join(_AnimalNames, \", \"))", + (string) (len=65) "\treturn Animal(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidAnimal)", (string) (len=1) "}", (string) "", (string) (len=77) "// MustParseAnimal converts a string to a Animal, and panics if is not valid.", @@ -186,6 +188,8 @@ (string) (len=27) "\tCasesAnotherLowerCaseStart", (string) (len=1) ")", (string) "", + (string) (len=96) "var ErrInvalidCases = fmt.Errorf(\"not a valid Cases, try [%s]\", strings.Join(_CasesNames, \", \"))", + (string) "", (string) (len=64) "const _CasesName = \"test_lowertest_capitalanotherlowercasestart\"", (string) "", (string) (len=27) "var _CasesNames = []string{", @@ -233,7 +237,7 @@ (string) (len=53) "\tif x, ok := _CasesValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=104) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases, try [%s]\", name, strings.Join(_CasesNames, \", \"))", + (string) (len=63) "\treturn Cases(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidCases)", (string) (len=1) "}", (string) "", (string) (len=75) "// MustParseCases converts a string to a Cases, and panics if is not valid.", @@ -356,6 +360,8 @@ (string) (len=12) "\tColorYellow", (string) (len=1) ")", (string) "", + (string) (len=96) "var ErrInvalidColor = fmt.Errorf(\"not a valid Color, try [%s]\", strings.Join(_ColorNames, \", \"))", + (string) "", (string) (len=53) "const _ColorName = \"blackwhiteredgreenbluegreyyellow\"", (string) "", (string) (len=27) "var _ColorNames = []string{", @@ -419,7 +425,7 @@ (string) (len=53) "\tif x, ok := _ColorValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=104) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color, try [%s]\", name, strings.Join(_ColorNames, \", \"))", + (string) (len=63) "\treturn Color(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColor)", (string) (len=1) "}", (string) "", (string) (len=75) "// MustParseColor converts a string to a Color, and panics if is not valid.", @@ -543,6 +549,8 @@ (string) (len=23) "\tColorWithCommentYellow", (string) (len=1) ")", (string) "", + (string) (len=129) "var ErrInvalidColorWithComment = fmt.Errorf(\"not a valid ColorWithComment, try [%s]\", strings.Join(_ColorWithCommentNames, \", \"))", + (string) "", (string) (len=64) "const _ColorWithCommentName = \"blackwhiteredgreenbluegreyyellow\"", (string) "", (string) (len=38) "var _ColorWithCommentNames = []string{", @@ -606,7 +614,7 @@ (string) (len=64) "\tif x, ok := _ColorWithCommentValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=137) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment, try [%s]\", name, strings.Join(_ColorWithCommentNames, \", \"))", + (string) (len=85) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment)", (string) (len=1) "}", (string) "", (string) (len=97) "// MustParseColorWithComment converts a string to a ColorWithComment, and panics if is not valid.", @@ -730,6 +738,8 @@ (string) (len=24) "\tColorWithComment2Yellow", (string) (len=1) ")", (string) "", + (string) (len=132) "var ErrInvalidColorWithComment2 = fmt.Errorf(\"not a valid ColorWithComment2, try [%s]\", strings.Join(_ColorWithComment2Names, \", \"))", + (string) "", (string) (len=65) "const _ColorWithComment2Name = \"blackwhiteredgreenbluegreyyellow\"", (string) "", (string) (len=39) "var _ColorWithComment2Names = []string{", @@ -793,7 +803,7 @@ (string) (len=65) "\tif x, ok := _ColorWithComment2Value[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=140) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2, try [%s]\", name, strings.Join(_ColorWithComment2Names, \", \"))", + (string) (len=87) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment2)", (string) (len=1) "}", (string) "", (string) (len=99) "// MustParseColorWithComment2 converts a string to a ColorWithComment2, and panics if is not valid.", @@ -924,6 +934,8 @@ (string) (len=31) "\tColorWithComment3RedOrangeBlue", (string) (len=1) ")", (string) "", + (string) (len=132) "var ErrInvalidColorWithComment3 = fmt.Errorf(\"not a valid ColorWithComment3, try [%s]\", strings.Join(_ColorWithComment3Names, \", \"))", + (string) "", (string) (len=100) "const _ColorWithComment3Name = \"blackwhiteredgreenbluegreyyellowblue-greenred-orangered-orange-blue\"", (string) "", (string) (len=39) "var _ColorWithComment3Names = []string{", @@ -999,7 +1011,7 @@ (string) (len=65) "\tif x, ok := _ColorWithComment3Value[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=140) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3, try [%s]\", name, strings.Join(_ColorWithComment3Names, \", \"))", + (string) (len=87) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment3)", (string) (len=1) "}", (string) "", (string) (len=99) "// MustParseColorWithComment3 converts a string to a ColorWithComment3, and panics if is not valid.", @@ -1133,6 +1145,8 @@ (string) (len=27) "\tColorWithComment4RedOrange", (string) (len=1) ")", (string) "", + (string) (len=132) "var ErrInvalidColorWithComment4 = fmt.Errorf(\"not a valid ColorWithComment4, try [%s]\", strings.Join(_ColorWithComment4Names, \", \"))", + (string) "", (string) (len=85) "const _ColorWithComment4Name = \"blackwhiteredgreenbluegreyyellowblue-greenred-orange\"", (string) "", (string) (len=39) "var _ColorWithComment4Names = []string{", @@ -1204,7 +1218,7 @@ (string) (len=65) "\tif x, ok := _ColorWithComment4Value[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=140) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4, try [%s]\", name, strings.Join(_ColorWithComment4Names, \", \"))", + (string) (len=87) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment4)", (string) (len=1) "}", (string) "", (string) (len=99) "// MustParseColorWithComment4 converts a string to a ColorWithComment4, and panics if is not valid.", @@ -1343,6 +1357,8 @@ (string) (len=45) "\tEnum64bitE2P33 Enum64bit = iota + 8454967282", (string) (len=1) ")", (string) "", + (string) (len=108) "var ErrInvalidEnum64bit = fmt.Errorf(\"not a valid Enum64bit, try [%s]\", strings.Join(_Enum64bitNames, \", \"))", + (string) "", (string) (len=102) "const _Enum64bitName = \"unknowne2p15e2p16e2p17e2p18e2p19e2p20e2p21e2p22e2p23e2p28e2p30e2p31e2p32e2p33\"", (string) "", (string) (len=31) "var _Enum64bitNames = []string{", @@ -1438,7 +1454,7 @@ (string) (len=57) "\tif x, ok := _Enum64bitValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=116) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit, try [%s]\", name, strings.Join(_Enum64bitNames, \", \"))", + (string) (len=71) "\treturn Enum64bit(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidEnum64bit)", (string) (len=1) "}", (string) "", (string) (len=83) "// MustParseEnum64bit converts a string to a Enum64bit, and panics if is not valid.", @@ -1557,6 +1573,8 @@ (string) (len=10) "\tModelFord", (string) (len=1) ")", (string) "", + (string) (len=96) "var ErrInvalidModel = fmt.Errorf(\"not a valid Model, try [%s]\", strings.Join(_ModelNames, \", \"))", + (string) "", (string) (len=36) "const _ModelName = \"toyotachevyford\"", (string) "", (string) (len=27) "var _ModelNames = []string{", @@ -1604,7 +1622,7 @@ (string) (len=53) "\tif x, ok := _ModelValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=104) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model, try [%s]\", name, strings.Join(_ModelNames, \", \"))", + (string) (len=63) "\treturn Model(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidModel)", (string) (len=1) "}", (string) "", (string) (len=75) "// MustParseModel converts a string to a Model, and panics if is not valid.", @@ -1719,6 +1737,8 @@ (string) (len=38) "\tNonASCIIԷժան NonASCII = iota + -1", (string) (len=1) ")", (string) "", + (string) (len=105) "var ErrInvalidNonASCII = fmt.Errorf(\"not a valid NonASCII, try [%s]\", strings.Join(_NonASCIINames, \", \"))", + (string) "", (string) (len=50) "const _NonASCIIName = \"продам車庫էժան\"", (string) "", (string) (len=30) "var _NonASCIINames = []string{", @@ -1766,7 +1786,7 @@ (string) (len=56) "\tif x, ok := _NonASCIIValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=113) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII, try [%s]\", name, strings.Join(_NonASCIINames, \", \"))", + (string) (len=69) "\treturn NonASCII(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidNonASCII)", (string) (len=1) "}", (string) "", (string) (len=81) "// MustParseNonASCII converts a string to a NonASCII, and panics if is not valid.", @@ -1889,6 +1909,8 @@ (string) (len=23) "\tSanitizingEndingHyphen", (string) (len=1) ")", (string) "", + (string) (len=111) "var ErrInvalidSanitizing = fmt.Errorf(\"not a valid Sanitizing, try [%s]\", strings.Join(_SanitizingNames, \", \"))", + (string) "", (string) (len=112) "const _SanitizingName = \"test-hyphen-hyphenstart_underscorefirst0numberfirst123456789a123123-asdfending-hyphen-\"", (string) "", (string) (len=32) "var _SanitizingNames = []string{", @@ -1952,7 +1974,7 @@ (string) (len=58) "\tif x, ok := _SanitizingValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=119) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing, try [%s]\", name, strings.Join(_SanitizingNames, \", \"))", + (string) (len=73) "\treturn Sanitizing(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSanitizing)", (string) (len=1) "}", (string) "", (string) (len=85) "// MustParseSanitizing converts a string to a Sanitizing, and panics if is not valid.", @@ -2067,6 +2089,8 @@ (string) (len=11) "\tSodaMtnDew", (string) (len=1) ")", (string) "", + (string) (len=93) "var ErrInvalidSoda = fmt.Errorf(\"not a valid Soda, try [%s]\", strings.Join(_SodaNames, \", \"))", + (string) "", (string) (len=35) "const _SodaName = \"cokepepsimtndew\"", (string) "", (string) (len=26) "var _SodaNames = []string{", @@ -2114,7 +2138,7 @@ (string) (len=52) "\tif x, ok := _SodaValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=101) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda, try [%s]\", name, strings.Join(_SodaNames, \", \"))", + (string) (len=61) "\treturn Soda(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSoda)", (string) (len=1) "}", (string) "", (string) (len=73) "// MustParseSoda converts a string to a Soda, and panics if is not valid.", @@ -2227,6 +2251,8 @@ (string) (len=20) "\tStartNotZeroNextNum", (string) (len=1) ")", (string) "", + (string) (len=117) "var ErrInvalidStartNotZero = fmt.Errorf(\"not a valid StartNotZero, try [%s]\", strings.Join(_StartNotZeroNames, \", \"))", + (string) "", (string) (len=47) "const _StartNotZeroName = \"startwithnumnextnum\"", (string) "", (string) (len=34) "var _StartNotZeroNames = []string{", @@ -2270,7 +2296,7 @@ (string) (len=60) "\tif x, ok := _StartNotZeroValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=125) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero, try [%s]\", name, strings.Join(_StartNotZeroNames, \", \"))", + (string) (len=77) "\treturn StartNotZero(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidStartNotZero)", (string) (len=1) "}", (string) "", (string) (len=89) "// MustParseStartNotZero converts a string to a StartNotZero, and panics if is not valid.", @@ -2385,6 +2411,8 @@ (string) (len=35) "\tStringEnumHere StringEnum = \"here\"", (string) (len=1) ")", (string) "", + (string) (len=111) "var ErrInvalidStringEnum = fmt.Errorf(\"not a valid StringEnum, try [%s]\", strings.Join(_StringEnumNames, \", \"))", + (string) "", (string) (len=32) "var _StringEnumNames = []string{", (string) (len=26) "\tstring(StringEnumRandom),", (string) (len=26) "\tstring(StringEnumValues),", @@ -2424,7 +2452,7 @@ (string) (len=58) "\tif x, ok := _StringEnumValue[strings.ToLower(name)]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=120) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum, try [%s]\", name, strings.Join(_StringEnumNames, \", \"))", + (string) (len=74) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is %w\", name, ErrInvalidStringEnum)", (string) (len=1) "}", (string) "", (string) (len=85) "// MustParseStringEnum converts a string to a StringEnum, and panics if is not valid.", diff --git a/generator/.snapshots/TestNoPrefixExampleFile b/generator/.snapshots/TestNoPrefixExampleFile index 8207acdf..17990e9b 100644 --- a/generator/.snapshots/TestNoPrefixExampleFile +++ b/generator/.snapshots/TestNoPrefixExampleFile @@ -1,4 +1,4 @@ -([]string) (len=1269) { +([]string) (len=1299) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -10,6 +10,8 @@ (string) (len=8) "import (", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", + (string) "", + (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -21,6 +23,8 @@ (string) (len=5) "\tFish", (string) (len=1) ")", (string) "", + (string) (len=55) "var ErrInvalidAnimal = errors.New(\"not a valid Animal\")", + (string) "", (string) (len=32) "const _AnimalName = \"CatDogFish\"", (string) "", (string) (len=35) "var _AnimalMap = map[Animal]string{", @@ -51,7 +55,7 @@ (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=63) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal\", name)", + (string) (len=65) "\treturn Animal(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidAnimal)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -96,6 +100,8 @@ (string) (len=22) "\tAnotherLowerCaseStart", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidCases = errors.New(\"not a valid Cases\")", + (string) "", (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", (string) "", (string) (len=33) "var _CasesMap = map[Cases]string{", @@ -126,7 +132,7 @@ (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases\", name)", + (string) (len=63) "\treturn Cases(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidCases)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -179,6 +185,8 @@ (string) (len=7) "\tYellow", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidColor = errors.New(\"not a valid Color\")", + (string) "", (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=33) "var _ColorMap = map[Color]string{", @@ -221,7 +229,7 @@ (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color\", name)", + (string) (len=63) "\treturn Color(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColor)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -275,6 +283,8 @@ (string) (len=7) "\tYellow", (string) (len=1) ")", (string) "", + (string) (len=75) "var ErrInvalidColorWithComment = errors.New(\"not a valid ColorWithComment\")", + (string) "", (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", @@ -317,7 +327,7 @@ (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=83) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment\", name)", + (string) (len=85) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -371,6 +381,8 @@ (string) (len=7) "\tYellow", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment2 = errors.New(\"not a valid ColorWithComment2\")", + (string) "", (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", @@ -413,7 +425,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2\", name)", + (string) (len=87) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment2)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -474,6 +486,8 @@ (string) (len=14) "\tRedOrangeBlue", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment3 = errors.New(\"not a valid ColorWithComment3\")", + (string) "", (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", (string) "", (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", @@ -525,7 +539,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3\", name)", + (string) (len=87) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment3)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -589,6 +603,8 @@ (string) (len=10) "\tRedOrange", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment4 = errors.New(\"not a valid ColorWithComment4\")", + (string) "", (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", (string) "", (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", @@ -637,7 +653,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4\", name)", + (string) (len=87) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment4)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -706,6 +722,8 @@ (string) (len=36) "\tE2P33 Enum64bit = iota + 8454967282", (string) (len=1) ")", (string) "", + (string) (len=61) "var ErrInvalidEnum64bit = errors.New(\"not a valid Enum64bit\")", + (string) "", (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", (string) "", (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", @@ -772,7 +790,7 @@ (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=69) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit\", name)", + (string) (len=71) "\treturn Enum64bit(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidEnum64bit)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -821,6 +839,8 @@ (string) (len=5) "\tFord", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidModel = errors.New(\"not a valid Model\")", + (string) "", (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", (string) "", (string) (len=33) "var _ModelMap = map[Model]string{", @@ -851,7 +871,7 @@ (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model\", name)", + (string) (len=63) "\treturn Model(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidModel)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -896,6 +916,8 @@ (string) (len=30) "\tԷժան NonASCII = iota + -1", (string) (len=1) ")", (string) "", + (string) (len=59) "var ErrInvalidNonASCII = errors.New(\"not a valid NonASCII\")", + (string) "", (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", (string) "", (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", @@ -926,7 +948,7 @@ (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=67) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII\", name)", + (string) (len=69) "\treturn NonASCII(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidNonASCII)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -979,6 +1001,8 @@ (string) (len=13) "\tEndingHyphen", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidSanitizing = errors.New(\"not a valid Sanitizing\")", + (string) "", (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", (string) "", (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", @@ -1021,7 +1045,7 @@ (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=71) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing\", name)", + (string) (len=73) "\treturn Sanitizing(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSanitizing)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1066,6 +1090,8 @@ (string) (len=7) "\tMtnDew", (string) (len=1) ")", (string) "", + (string) (len=51) "var ErrInvalidSoda = errors.New(\"not a valid Soda\")", + (string) "", (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", (string) "", (string) (len=31) "var _SodaMap = map[Soda]string{", @@ -1096,7 +1122,7 @@ (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=59) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda\", name)", + (string) (len=61) "\treturn Soda(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSoda)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1139,6 +1165,8 @@ (string) (len=8) "\tNextNum", (string) (len=1) ")", (string) "", + (string) (len=67) "var ErrInvalidStartNotZero = errors.New(\"not a valid StartNotZero\")", + (string) "", (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", (string) "", (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", @@ -1166,7 +1194,7 @@ (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=75) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero\", name)", + (string) (len=77) "\treturn StartNotZero(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidStartNotZero)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1211,6 +1239,8 @@ (string) (len=25) "\tHere StringEnum = \"here\"", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidStringEnum = errors.New(\"not a valid StringEnum\")", + (string) "", (string) (len=44) "// String implements the Stringer interface.", (string) (len=37) "func (x StringEnum) String() string {", (string) (len=17) "\treturn string(x)", @@ -1233,7 +1263,7 @@ (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=72) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum\", name)", + (string) (len=74) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is %w\", name, ErrInvalidStringEnum)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", diff --git a/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel b/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel index 9eeb1ec1..d4b375f5 100644 --- a/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel +++ b/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel @@ -1,4 +1,4 @@ -([]string) (len=1269) { +([]string) (len=1299) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -10,6 +10,8 @@ (string) (len=8) "import (", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", + (string) "", + (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -21,6 +23,8 @@ (string) (len=5) "\tFish", (string) (len=1) ")", (string) "", + (string) (len=55) "var ErrInvalidAnimal = errors.New(\"not a valid Animal\")", + (string) "", (string) (len=32) "const _AnimalName = \"CatDogFish\"", (string) "", (string) (len=35) "var _AnimalMap = map[Animal]string{", @@ -51,7 +55,7 @@ (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=63) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal\", name)", + (string) (len=65) "\treturn Animal(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidAnimal)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -96,6 +100,8 @@ (string) (len=22) "\tAnotherLowerCaseStart", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidCases = errors.New(\"not a valid Cases\")", + (string) "", (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", (string) "", (string) (len=33) "var _CasesMap = map[Cases]string{", @@ -126,7 +132,7 @@ (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases\", name)", + (string) (len=63) "\treturn Cases(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidCases)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -179,6 +185,8 @@ (string) (len=7) "\tYellow", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidColor = errors.New(\"not a valid Color\")", + (string) "", (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=33) "var _ColorMap = map[Color]string{", @@ -221,7 +229,7 @@ (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color\", name)", + (string) (len=63) "\treturn Color(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColor)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -275,6 +283,8 @@ (string) (len=7) "\tYellow", (string) (len=1) ")", (string) "", + (string) (len=75) "var ErrInvalidColorWithComment = errors.New(\"not a valid ColorWithComment\")", + (string) "", (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", @@ -317,7 +327,7 @@ (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=83) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment\", name)", + (string) (len=85) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -371,6 +381,8 @@ (string) (len=7) "\tYellow", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment2 = errors.New(\"not a valid ColorWithComment2\")", + (string) "", (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", @@ -413,7 +425,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2\", name)", + (string) (len=87) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment2)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -474,6 +486,8 @@ (string) (len=14) "\tRedOrangeBlue", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment3 = errors.New(\"not a valid ColorWithComment3\")", + (string) "", (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", (string) "", (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", @@ -525,7 +539,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3\", name)", + (string) (len=87) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment3)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -589,6 +603,8 @@ (string) (len=10) "\tRedOrange", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment4 = errors.New(\"not a valid ColorWithComment4\")", + (string) "", (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", (string) "", (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", @@ -637,7 +653,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4\", name)", + (string) (len=87) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment4)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -706,6 +722,8 @@ (string) (len=36) "\tE2P33 Enum64bit = iota + 8454967282", (string) (len=1) ")", (string) "", + (string) (len=61) "var ErrInvalidEnum64bit = errors.New(\"not a valid Enum64bit\")", + (string) "", (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", (string) "", (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", @@ -772,7 +790,7 @@ (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=69) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit\", name)", + (string) (len=71) "\treturn Enum64bit(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidEnum64bit)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -821,6 +839,8 @@ (string) (len=5) "\tFord", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidModel = errors.New(\"not a valid Model\")", + (string) "", (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", (string) "", (string) (len=33) "var _ModelMap = map[Model]string{", @@ -851,7 +871,7 @@ (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model\", name)", + (string) (len=63) "\treturn Model(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidModel)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -896,6 +916,8 @@ (string) (len=30) "\tԷժան NonASCII = iota + -1", (string) (len=1) ")", (string) "", + (string) (len=59) "var ErrInvalidNonASCII = errors.New(\"not a valid NonASCII\")", + (string) "", (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", (string) "", (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", @@ -926,7 +948,7 @@ (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=67) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII\", name)", + (string) (len=69) "\treturn NonASCII(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidNonASCII)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -979,6 +1001,8 @@ (string) (len=13) "\tEndingHyphen", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidSanitizing = errors.New(\"not a valid Sanitizing\")", + (string) "", (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", (string) "", (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", @@ -1021,7 +1045,7 @@ (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=71) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing\", name)", + (string) (len=73) "\treturn Sanitizing(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSanitizing)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1066,6 +1090,8 @@ (string) (len=7) "\tMtnDew", (string) (len=1) ")", (string) "", + (string) (len=51) "var ErrInvalidSoda = errors.New(\"not a valid Soda\")", + (string) "", (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", (string) "", (string) (len=31) "var _SodaMap = map[Soda]string{", @@ -1096,7 +1122,7 @@ (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=59) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda\", name)", + (string) (len=61) "\treturn Soda(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSoda)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1139,6 +1165,8 @@ (string) (len=8) "\tNextNum", (string) (len=1) ")", (string) "", + (string) (len=67) "var ErrInvalidStartNotZero = errors.New(\"not a valid StartNotZero\")", + (string) "", (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", (string) "", (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", @@ -1166,7 +1194,7 @@ (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=75) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero\", name)", + (string) (len=77) "\treturn StartNotZero(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidStartNotZero)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1211,6 +1239,8 @@ (string) (len=25) "\tHere StringEnum = \"here\"", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidStringEnum = errors.New(\"not a valid StringEnum\")", + (string) "", (string) (len=44) "// String implements the Stringer interface.", (string) (len=37) "func (x StringEnum) String() string {", (string) (len=17) "\treturn string(x)", @@ -1233,7 +1263,7 @@ (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=72) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum\", name)", + (string) (len=74) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is %w\", name, ErrInvalidStringEnum)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", diff --git a/generator/.snapshots/TestReplacePrefixExampleFile b/generator/.snapshots/TestReplacePrefixExampleFile index 211d26ca..852cf964 100644 --- a/generator/.snapshots/TestReplacePrefixExampleFile +++ b/generator/.snapshots/TestReplacePrefixExampleFile @@ -1,4 +1,4 @@ -([]string) (len=1269) { +([]string) (len=1299) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -10,6 +10,8 @@ (string) (len=8) "import (", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", + (string) "", + (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -21,6 +23,8 @@ (string) (len=14) "\tMyPrefix_Fish", (string) (len=1) ")", (string) "", + (string) (len=55) "var ErrInvalidAnimal = errors.New(\"not a valid Animal\")", + (string) "", (string) (len=32) "const _AnimalName = \"CatDogFish\"", (string) "", (string) (len=35) "var _AnimalMap = map[Animal]string{", @@ -51,7 +55,7 @@ (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=63) "\treturn Animal(0), fmt.Errorf(\"%s is not a valid Animal\", name)", + (string) (len=65) "\treturn Animal(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidAnimal)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -96,6 +100,8 @@ (string) (len=31) "\tMyPrefix_AnotherLowerCaseStart", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidCases = errors.New(\"not a valid Cases\")", + (string) "", (string) (len=64) "const _CasesName = \"test_lowerTest_capitalanotherLowerCaseStart\"", (string) "", (string) (len=33) "var _CasesMap = map[Cases]string{", @@ -126,7 +132,7 @@ (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Cases(0), fmt.Errorf(\"%s is not a valid Cases\", name)", + (string) (len=63) "\treturn Cases(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidCases)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -179,6 +185,8 @@ (string) (len=16) "\tMyPrefix_Yellow", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidColor = errors.New(\"not a valid Color\")", + (string) "", (string) (len=53) "const _ColorName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=33) "var _ColorMap = map[Color]string{", @@ -221,7 +229,7 @@ (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Color(0), fmt.Errorf(\"%s is not a valid Color\", name)", + (string) (len=63) "\treturn Color(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColor)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -275,6 +283,8 @@ (string) (len=16) "\tMyPrefix_Yellow", (string) (len=1) ")", (string) "", + (string) (len=75) "var ErrInvalidColorWithComment = errors.New(\"not a valid ColorWithComment\")", + (string) "", (string) (len=64) "const _ColorWithCommentName = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", @@ -317,7 +327,7 @@ (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=83) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is not a valid ColorWithComment\", name)", + (string) (len=85) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -371,6 +381,8 @@ (string) (len=16) "\tMyPrefix_Yellow", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment2 = errors.New(\"not a valid ColorWithComment2\")", + (string) "", (string) (len=65) "const _ColorWithComment2Name = \"BlackWhiteRedGreenBluegreyyellow\"", (string) "", (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", @@ -413,7 +425,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is not a valid ColorWithComment2\", name)", + (string) (len=87) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment2)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -474,6 +486,8 @@ (string) (len=23) "\tMyPrefix_RedOrangeBlue", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment3 = errors.New(\"not a valid ColorWithComment3\")", + (string) "", (string) (len=100) "const _ColorWithComment3Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orangered-orange-blue\"", (string) "", (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", @@ -525,7 +539,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is not a valid ColorWithComment3\", name)", + (string) (len=87) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment3)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -589,6 +603,8 @@ (string) (len=19) "\tMyPrefix_RedOrange", (string) (len=1) ")", (string) "", + (string) (len=77) "var ErrInvalidColorWithComment4 = errors.New(\"not a valid ColorWithComment4\")", + (string) "", (string) (len=85) "const _ColorWithComment4Name = \"BlackWhiteRedGreenBluegreyyellowblue-greenred-orange\"", (string) "", (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", @@ -637,7 +653,7 @@ (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=85) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is not a valid ColorWithComment4\", name)", + (string) (len=87) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment4)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -706,6 +722,8 @@ (string) (len=45) "\tMyPrefix_E2P33 Enum64bit = iota + 8454967282", (string) (len=1) ")", (string) "", + (string) (len=61) "var ErrInvalidEnum64bit = errors.New(\"not a valid Enum64bit\")", + (string) "", (string) (len=102) "const _Enum64bitName = \"UnknownE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", (string) "", (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", @@ -772,7 +790,7 @@ (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=69) "\treturn Enum64bit(0), fmt.Errorf(\"%s is not a valid Enum64bit\", name)", + (string) (len=71) "\treturn Enum64bit(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidEnum64bit)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -821,6 +839,8 @@ (string) (len=14) "\tMyPrefix_Ford", (string) (len=1) ")", (string) "", + (string) (len=53) "var ErrInvalidModel = errors.New(\"not a valid Model\")", + (string) "", (string) (len=36) "const _ModelName = \"ToyotaChevyFord\"", (string) "", (string) (len=33) "var _ModelMap = map[Model]string{", @@ -851,7 +871,7 @@ (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=61) "\treturn Model(0), fmt.Errorf(\"%s is not a valid Model\", name)", + (string) (len=63) "\treturn Model(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidModel)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -896,6 +916,8 @@ (string) (len=39) "\tMyPrefix_Էժան NonASCII = iota + -1", (string) (len=1) ")", (string) "", + (string) (len=59) "var ErrInvalidNonASCII = errors.New(\"not a valid NonASCII\")", + (string) "", (string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"", (string) "", (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", @@ -926,7 +948,7 @@ (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=67) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII\", name)", + (string) (len=69) "\treturn NonASCII(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidNonASCII)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -979,6 +1001,8 @@ (string) (len=22) "\tMyPrefix_EndingHyphen", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidSanitizing = errors.New(\"not a valid Sanitizing\")", + (string) "", (string) (len=112) "const _SanitizingName = \"test-Hyphen-hyphenStart_underscoreFirst0numberFirst123456789a123123-asdfending-hyphen-\"", (string) "", (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", @@ -1021,7 +1045,7 @@ (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=71) "\treturn Sanitizing(0), fmt.Errorf(\"%s is not a valid Sanitizing\", name)", + (string) (len=73) "\treturn Sanitizing(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSanitizing)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1066,6 +1090,8 @@ (string) (len=16) "\tMyPrefix_MtnDew", (string) (len=1) ")", (string) "", + (string) (len=51) "var ErrInvalidSoda = errors.New(\"not a valid Soda\")", + (string) "", (string) (len=35) "const _SodaName = \"CokePepsiMtnDew\"", (string) "", (string) (len=31) "var _SodaMap = map[Soda]string{", @@ -1096,7 +1122,7 @@ (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=59) "\treturn Soda(0), fmt.Errorf(\"%s is not a valid Soda\", name)", + (string) (len=61) "\treturn Soda(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSoda)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1139,6 +1165,8 @@ (string) (len=17) "\tMyPrefix_NextNum", (string) (len=1) ")", (string) "", + (string) (len=67) "var ErrInvalidStartNotZero = errors.New(\"not a valid StartNotZero\")", + (string) "", (string) (len=47) "const _StartNotZeroName = \"startWithNumnextNum\"", (string) "", (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", @@ -1166,7 +1194,7 @@ (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=75) "\treturn StartNotZero(0), fmt.Errorf(\"%s is not a valid StartNotZero\", name)", + (string) (len=77) "\treturn StartNotZero(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidStartNotZero)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", @@ -1211,6 +1239,8 @@ (string) (len=34) "\tMyPrefix_Here StringEnum = \"here\"", (string) (len=1) ")", (string) "", + (string) (len=63) "var ErrInvalidStringEnum = errors.New(\"not a valid StringEnum\")", + (string) "", (string) (len=44) "// String implements the Stringer interface.", (string) (len=37) "func (x StringEnum) String() string {", (string) (len=17) "\treturn string(x)", @@ -1233,7 +1263,7 @@ (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", (string) (len=15) "\t\treturn x, nil", (string) (len=2) "\t}", - (string) (len=72) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is not a valid StringEnum\", name)", + (string) (len=74) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is %w\", name, ErrInvalidStringEnum)", (string) (len=1) "}", (string) "", (string) (len=53) "// MarshalText implements the text marshaller method.", diff --git a/generator/enum.tmpl b/generator/enum.tmpl index 46292769..3759c5ac 100644 --- a/generator/enum.tmpl +++ b/generator/enum.tmpl @@ -26,6 +26,11 @@ const ( {{$value.PrefixedName}} {{ if eq $rIndex 0 }}{{$enumName}} = iota{{ if ne "0" $offset }} + {{ $offset }}{{end}}{{else if ne $lastOffset $offset }}{{$enumName}} = iota + {{ $offset }}{{end}}{{$_ := set $vars "lastoffset" $offset}} {{- end}} ) +{{if .names -}} +var ErrInvalid{{.enum.Name}} = fmt.Errorf("not a valid {{.enum.Name}}, try [%s]", strings.Join(_{{.enum.Name}}Names, ", ")) +{{- else -}} +var ErrInvalid{{.enum.Name}} = errors.New("not a valid {{.enum.Name}}") +{{- end}} {{ template "stringer" . }} @@ -50,11 +55,7 @@ func Parse{{.enum.Name}}(name string) ({{.enum.Name}}, error) { if x, ok := _{{.enum.Name}}Value[strings.ToLower(name)]; ok { return x, nil }{{- end}} - {{if .names -}} - return {{.enum.Name}}(0), fmt.Errorf("%s is not a valid {{.enum.Name}}, try [%s]", name, strings.Join(_{{.enum.Name}}Names, ", ")) - {{- else -}} - return {{.enum.Name}}(0), fmt.Errorf("%s is not a valid {{.enum.Name}}", name) - {{- end}} + return {{.enum.Name}}(0), fmt.Errorf("%s is %w", name, ErrInvalid{{.enum.Name}}) } {{ if .mustparse }} diff --git a/generator/enum_string.tmpl b/generator/enum_string.tmpl index 65f4d327..f71f02c9 100644 --- a/generator/enum_string.tmpl +++ b/generator/enum_string.tmpl @@ -11,6 +11,11 @@ const ( {{$value.PrefixedName}} {{$enumName}} = "{{$value.RawName}}" {{- end}} ) +{{if .names -}} +var ErrInvalid{{.enum.Name}} = fmt.Errorf("not a valid {{.enum.Name}}, try [%s]", strings.Join(_{{.enum.Name}}Names, ", ")) +{{- else -}} +var ErrInvalid{{.enum.Name}} = errors.New("not a valid {{.enum.Name}}") +{{- end}} {{ if .names }}var _{{.enum.Name}}Names = {{namify .enum}} @@ -44,11 +49,7 @@ func Parse{{.enum.Name}}(name string) ({{.enum.Name}}, error) { if x, ok := _{{.enum.Name}}Value[strings.ToLower(name)]; ok { return x, nil }{{- end}} - {{if .names -}} - return {{.enum.Name}}(""), fmt.Errorf("%s is not a valid {{.enum.Name}}, try [%s]", name, strings.Join(_{{.enum.Name}}Names, ", ")) - {{- else -}} - return {{.enum.Name}}(""), fmt.Errorf("%s is not a valid {{.enum.Name}}", name) - {{- end}} + return {{.enum.Name}}(""), fmt.Errorf("%s is %w", name, ErrInvalid{{.enum.Name}}) } {{ if .mustparse }} @@ -85,8 +86,12 @@ func (x *{{.enum.Name}}) UnmarshalText(text []byte) error { } {{end}} -{{ if or .sql .sqlnullint .sqlnullstr}} +{{ if or .sql .sqlnullstr .sqlint .sqlnullint }} var err{{.enum.Name}}NilPtr = errors.New("value pointer is nil") // one per type for package clashes +{{ end }} + +{{/* SQL stored as a string value */}} +{{ if or .sql .sqlnullstr }} // Scan implements the Scanner interface. func (x *{{.enum.Name}}) Scan(value interface{}) (err error) { @@ -121,17 +126,113 @@ func (x *{{.enum.Name}}) Scan(value interface{}) (err error) { return } -{{ if or .sql .sqlnullstr }} // Value implements the driver Valuer interface. func (x {{.enum.Name}}) Value() (driver.Value, error) { return x.String(), nil } -{{ else }} +{{end}} + +{{/* SQL stored as an integer value */}} +{{ if or .sqlint .sqlnullint }} +var sqlInt{{.enum.Name}}Map = map[int64]{{.enum.Name}}{ {{ range $rIndex, $value := .enum.Values }}{{ if ne $value.Name "_"}} +{{ $value.Value }}: {{ $value.PrefixedName }},{{end}} +{{- end}} +} + +var sqlInt{{.enum.Name}}Value = map[{{.enum.Name}}]int64{ {{ range $rIndex, $value := .enum.Values }}{{ if ne $value.Name "_"}} + {{ $value.PrefixedName }}: {{ $value.Value }},{{end}} +{{- end}} +} + +func lookupSqlInt{{.enum.Name}}(val int64) ({{.enum.Name}}, error){ + x, ok := sqlInt{{.enum.Name}}Map[val] + if !ok{ + return x, fmt.Errorf("%v is not %w", val, ErrInvalid{{.enum.Name}}) + } + return x, nil +} + +// Scan implements the Scanner interface. +func (x *{{.enum.Name}}) Scan(value interface{}) (err error) { + if value == nil { + *x = {{.enum.Name}}("") + return + } + + // A wider range of scannable types. + // driver.Value values at the top of the list for expediency + switch v := value.(type) { + case int64: + *x, err = lookupSqlInt{{.enum.Name}}(v) + case string: + *x, err = Parse{{.enum.Name}}(v) + case []byte: + if val, verr := strconv.ParseInt(string(v), 10, 64); verr == nil { + *x, err = lookupSqlInt{{.enum.Name}}(val) + } else { + // try parsing the value as a string + *x, err = Parse{{.enum.Name}}(string(v)) + } + case {{.enum.Name}}: + *x = v + case int: + *x, err = lookupSqlInt{{.enum.Name}}(int64(v)) + case *{{.enum.Name}}: + if v == nil{ + return err{{.enum.Name}}NilPtr + } + *x = *v + case uint: + *x, err = lookupSqlInt{{.enum.Name}}(int64(v)) + case uint64: + *x, err = lookupSqlInt{{.enum.Name}}(int64(v)) + case *int: + if v == nil{ + return err{{.enum.Name}}NilPtr + } + *x, err = lookupSqlInt{{.enum.Name}}(int64(*v)) + case *int64: + if v == nil{ + return err{{.enum.Name}}NilPtr + } + *x, err = lookupSqlInt{{.enum.Name}}(int64(*v)) + case float64: // json marshals everything as a float64 if it's a number + *x, err = lookupSqlInt{{.enum.Name}}(int64(v)) + case *float64: // json marshals everything as a float64 if it's a number + if v == nil{ + return err{{.enum.Name}}NilPtr + } + *x, err = lookupSqlInt{{.enum.Name}}(int64(*v)) + case *uint: + if v == nil{ + return err{{.enum.Name}}NilPtr + } + *x, err = lookupSqlInt{{.enum.Name}}(int64(*v)) + case *uint64: + if v == nil{ + return err{{.enum.Name}}NilPtr + } + *x, err = lookupSqlInt{{.enum.Name}}(int64(*v)) + case *string: + if v == nil{ + return err{{.enum.Name}}NilPtr + } + *x, err = Parse{{.enum.Name}}(*v) + default: + return errors.New("invalid type for {{.enum.Name}}") + } + + return +} + // Value implements the driver Valuer interface. func (x {{.enum.Name}}) Value() (driver.Value, error) { - return string(x), nil + val, ok := sqlInt{{.enum.Name}}Value[x] + if !ok{ + return nil, ErrInvalid{{.enum.Name}} + } + return int64(val), nil } -{{end}} {{end}} diff --git a/generator/generator.go b/generator/generator.go index 5b377b00..da70f761 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -42,6 +42,7 @@ type Generator struct { caseInsensitive bool marshal bool sql bool + sqlint bool flag bool names bool leaveSnakeCase bool @@ -133,6 +134,12 @@ func (g *Generator) WithSQLDriver() *Generator { return g } +// WithSQLInt is used to signal a string to be stored as an int. +func (g *Generator) WithSQLInt() *Generator { + g.sqlint = true + return g +} + // WithFlag is used to add flag methods to the enum func (g *Generator) WithFlag() *Generator { g.flag = true @@ -278,6 +285,7 @@ func (g *Generator) Generate(f *ast.File) ([]byte, error) { "nocase": g.caseInsensitive, "marshal": g.marshal, "sql": g.sql, + "sqlint": g.sqlint, "flag": g.flag, "names": g.names, "ptr": g.ptr, diff --git a/main.go b/main.go index 1e10a10a..faf51cc3 100644 --- a/main.go +++ b/main.go @@ -27,6 +27,7 @@ type rootT struct { NoCase bool Marshal bool SQL bool + SQLInt bool Flag bool Prefix string Names bool @@ -86,6 +87,11 @@ func main() { Usage: "Adds SQL database scan and value functions.", Destination: &argv.SQL, }, + &cli.BoolFlag{ + Name: "sqlint", + Usage: "Tells the generator that a string typed enum should be stored in sql as an integer value.", + Destination: &argv.SQLInt, + }, &cli.BoolFlag{ Name: "flag", Usage: "Adds golang flag functions.", @@ -171,6 +177,9 @@ func main() { if argv.SQL { g.WithSQLDriver() } + if argv.SQLInt { + g.WithSQLInt() + } if argv.Flag { g.WithFlag() } From fe1c7d4a55fe99cae9d8650af71bca8422a61a66 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Mon, 31 Oct 2022 07:31:33 -0700 Subject: [PATCH 43/91] update dependencies (#149) --- go.mod | 27 +++++++++++++++------------ go.sum | 30 ++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 46dc1c3f..5f9639f1 100644 --- a/go.mod +++ b/go.mod @@ -6,35 +6,38 @@ require ( github.com/Masterminds/sprig v2.22.0+incompatible github.com/bradleyjkemp/cupaloy v2.3.0+incompatible github.com/golang/mock v1.6.0 - github.com/labstack/gommon v0.3.1 + github.com/labstack/gommon v0.4.0 github.com/mattn/goveralls v0.0.11 github.com/pkg/errors v0.9.1 - github.com/stretchr/testify v1.8.0 - github.com/urfave/cli/v2 v2.16.3 - golang.org/x/tools v0.1.12 + github.com/stretchr/testify v1.8.1 + github.com/urfave/cli/v2 v2.23.0 + golang.org/x/tools v0.2.0 ) require ( - github.com/BurntSushi/toml v1.1.0 // indirect + github.com/BurntSushi/toml v1.2.1 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/google/uuid v1.3.0 // indirect - github.com/huandu/xstrings v1.3.2 // indirect + github.com/huandu/xstrings v1.3.3 // indirect github.com/imdario/mergo v0.3.13 // indirect - github.com/kr/pretty v0.3.0 // indirect - github.com/mattn/go-colorable v0.1.12 // indirect - github.com/mattn/go-isatty v0.0.14 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.16 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rogpeppe/go-internal v1.9.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect + github.com/stretchr/objx v0.5.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect - golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect - golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect + golang.org/x/crypto v0.1.0 // indirect + golang.org/x/mod v0.6.0 // indirect + golang.org/x/sys v0.1.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 1c39ab8c..03545310 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ github.com/BurntSushi/toml v1.1.0 h1:ksErzDEI1khOiGPgpwuI7x2ebx/uXQNw7xJpn9Eq1+I= github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= @@ -20,47 +22,66 @@ github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4= +github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o= github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= +github.com/labstack/gommon v0.4.0 h1:y7cvthEAEbU0yHOf4axH8ZG2NH8knB9iNSoTO8dyIk8= +github.com/labstack/gommon v0.4.0/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/goveralls v0.0.11 h1:eJXea6R6IFlL1QMKNMzDvvHv/hwGrnvyig4N+0+XiMM= github.com/mattn/goveralls v0.0.11/go.mod h1:gU8SyhNswsJKchEV93xRQxX6X3Ei4PJdQk/6ZHvrvRk= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/urfave/cli/v2 v2.16.3 h1:gHoFIwpPjoyIMbJp/VFd+/vuD0dAgFK4B6DpEMFJfQk= github.com/urfave/cli/v2 v2.16.3/go.mod h1:1CNUng3PtjQMtRzJO4FMXBQvkGtuYRxxiR9xMa7jMwI= +github.com/urfave/cli/v2 v2.23.0 h1:pkly7gKIeYv3olPAeNajNpLjeJrmTPYCoZWaV+2VfvE= +github.com/urfave/cli/v2 v2.23.0/go.mod h1:1CNUng3PtjQMtRzJO4FMXBQvkGtuYRxxiR9xMa7jMwI= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= @@ -70,9 +91,13 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e h1:T8NU3HyQ8ClP4SEE+KbFlg6n0NhuTsN4MyznaarGsZM= golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= @@ -88,6 +113,9 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -96,6 +124,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 003d27982e120186704b0d33da708a16ba4222e0 Mon Sep 17 00:00:00 2001 From: Angus Dippenaar Date: Tue, 8 Nov 2022 14:03:29 +0100 Subject: [PATCH 44/91] Use GOFILE env var (#141) * Add GOFILE as env var * remove file flags --- README.md | 2 +- _example/animal.go | 2 +- _example/color.go | 2 +- _example/commented.go | 2 +- _example/custom_prefix.go | 2 +- _example/enum_32_bit.go | 6 +++--- _example/enum_64_bit.go | 9 ++++----- _example/example.go | 2 +- _example/force_lower.go | 2 +- _example/negative.go | 8 +++++--- _example/replace_prefix.go | 2 +- _example/replace_prefix_int.go | 2 +- _example/sql.go | 2 +- _example/sql_int.go | 2 +- _example/sql_str.go | 2 +- _example/strings_only.go | 2 +- _example/user_template.go | 2 +- main.go | 1 + 18 files changed, 27 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index a5eb055b..d7cda7e8 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ I did not specify any overrides on the release binary names, so `uname -s` and ` ### Using go generate -1. Add a go:generate line to your file like so... `//go:generate go-enum -f=$GOFILE --marshal` +1. Add a go:generate line to your file like so... `//go:generate go-enum --marshal` 1. Run go generate like so `go generate ./...` 1. Enjoy your newly created Enumeration! diff --git a/_example/animal.go b/_example/animal.go index 02c177a0..ea64ee7e 100644 --- a/_example/animal.go +++ b/_example/animal.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE -a "+:Plus,#:Sharp" +//go:generate ../bin/go-enum -a "+:Plus,#:Sharp" package example diff --git a/_example/color.go b/_example/color.go index b3a4b738..d1ba0f96 100644 --- a/_example/color.go +++ b/_example/color.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE --marshal --lower --ptr --mustparse +//go:generate ../bin/go-enum --marshal --lower --ptr --mustparse package example diff --git a/_example/commented.go b/_example/commented.go index d45b5ef9..1331f463 100644 --- a/_example/commented.go +++ b/_example/commented.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE --marshal --lower +//go:generate ../bin/go-enum --marshal --lower package example diff --git a/_example/custom_prefix.go b/_example/custom_prefix.go index 02f0fd7d..e3e35731 100644 --- a/_example/custom_prefix.go +++ b/_example/custom_prefix.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE --prefix=AcmeInc +//go:generate ../bin/go-enum --prefix=AcmeInc package example diff --git a/_example/enum_32_bit.go b/_example/enum_32_bit.go index 7b86b74d..8a2d4333 100644 --- a/_example/enum_32_bit.go +++ b/_example/enum_32_bit.go @@ -1,8 +1,9 @@ -//go:generate ../bin/go-enum -f=$GOFILE --names +//go:generate ../bin/go-enum --names package example -/* ENUM( +/* +ENUM( Unkno = 0 E2P15 = 32768 @@ -18,6 +19,5 @@ E2P28 = 536870912 E2P30 = 1073741824 ) - */ type Enum32bit uint32 diff --git a/_example/enum_64_bit.go b/_example/enum_64_bit.go index 6b8bbce4..b8d6e1fc 100644 --- a/_example/enum_64_bit.go +++ b/_example/enum_64_bit.go @@ -1,10 +1,10 @@ -//go:generate ../bin/go-enum -f=$GOFILE --names +//go:generate ../bin/go-enum --names package example -/* ENUM( - -Unkno = 0 +/* +ENUM( +Unkno = 0 E2P15 = 32768 E2P16 = 65536 E2P17 = 131072 @@ -21,6 +21,5 @@ E2P32 = 4294967296 E2P33 = 8454967296 E2P63 = 18446744073709551615 ) - */ type Enum64bit uint64 diff --git a/_example/example.go b/_example/example.go index 1f60dec1..971072a7 100644 --- a/_example/example.go +++ b/_example/example.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE --marshal --nocase --flag --names +//go:generate ../bin/go-enum --marshal --nocase --flag --names package example diff --git a/_example/force_lower.go b/_example/force_lower.go index 44e895e6..f1e23c37 100644 --- a/_example/force_lower.go +++ b/_example/force_lower.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE --forcelower +//go:generate ../bin/go-enum --forcelower package example diff --git a/_example/negative.go b/_example/negative.go index ae02ba7b..15a12f2f 100644 --- a/_example/negative.go +++ b/_example/negative.go @@ -1,8 +1,9 @@ -//go:generate ../bin/go-enum -f=$GOFILE --nocase +//go:generate ../bin/go-enum --nocase package example -/* ENUM( +/* +ENUM( Unknown = -1, Good, Bad @@ -10,7 +11,8 @@ Bad */ type Status int -/* ENUM( +/* +ENUM( Unknown = -5, Good, Bad, diff --git a/_example/replace_prefix.go b/_example/replace_prefix.go index 31b1ff9c..eca8440a 100644 --- a/_example/replace_prefix.go +++ b/_example/replace_prefix.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE --marshal --prefix=AcmeInc_ --noprefix --nocamel --names +//go:generate ../bin/go-enum --marshal --prefix=AcmeInc_ --noprefix --nocamel --names package example diff --git a/_example/replace_prefix_int.go b/_example/replace_prefix_int.go index f39769db..a2f9c146 100644 --- a/_example/replace_prefix_int.go +++ b/_example/replace_prefix_int.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE --marshal --prefix=AcmeInt_ --noprefix --nocamel --names +//go:generate ../bin/go-enum --marshal --prefix=AcmeInt_ --noprefix --nocamel --names package example diff --git a/_example/sql.go b/_example/sql.go index 182d5112..fcb5bca7 100644 --- a/_example/sql.go +++ b/_example/sql.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE --sql --sqlnullstr --sqlnullint --ptr --marshal +//go:generate ../bin/go-enum --sql --sqlnullstr --sqlnullint --ptr --marshal package example diff --git a/_example/sql_int.go b/_example/sql_int.go index 482a9a98..082e6edc 100644 --- a/_example/sql_int.go +++ b/_example/sql_int.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE --sqlnullint +//go:generate ../bin/go-enum --sqlnullint package example diff --git a/_example/sql_str.go b/_example/sql_str.go index d1563ff6..f5525011 100644 --- a/_example/sql_str.go +++ b/_example/sql_str.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE --sql --sqlnullstr +//go:generate ../bin/go-enum --sql --sqlnullstr package example diff --git a/_example/strings_only.go b/_example/strings_only.go index 2c7e7272..c1e49b94 100644 --- a/_example/strings_only.go +++ b/_example/strings_only.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE --ptr --marshal --flag --nocase --mustparse --sqlnullstr --sql --names +//go:generate ../bin/go-enum --ptr --marshal --flag --nocase --mustparse --sqlnullstr --sql --names package example diff --git a/_example/user_template.go b/_example/user_template.go index 6527071b..a46332e8 100644 --- a/_example/user_template.go +++ b/_example/user_template.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE -t user_template.tmpl -t *user_glob*.tmpl +//go:generate ../bin/go-enum -t user_template.tmpl -t *user_glob*.tmpl package example diff --git a/main.go b/main.go index faf51cc3..c1b8f745 100644 --- a/main.go +++ b/main.go @@ -58,6 +58,7 @@ func main() { &cli.StringSliceFlag{ Name: "file", Aliases: []string{"f"}, + EnvVars: []string{"GOFILE"}, Usage: "The file(s) to generate enums. Use more than one flag for more files.", Required: true, Destination: &argv.FileNames, From 8e2c93debfc66888870b2dfd86e70c79a70c920f Mon Sep 17 00:00:00 2001 From: Angus Dippenaar Date: Tue, 8 Nov 2022 14:22:38 +0100 Subject: [PATCH 45/91] Fix deprecated function use, ignored return (#139) * Fix deprecated * fix strings.Title deprecation --- .../Test118CustomPrefixExampleFile-og | 30 +++++++++---------- generator/.snapshots/Test118ExampleFile-og | 30 +++++++++---------- .../Test118ExampleFileMoreOptions-og | 30 +++++++++---------- .../.snapshots/Test118NoPrefixExampleFile-og | 30 +++++++++---------- ...t118NoPrefixExampleFileWithSnakeToCamel-og | 22 +++++++------- .../.snapshots/TestCustomPrefixExampleFile | 30 +++++++++---------- generator/.snapshots/TestExampleFile | 30 +++++++++---------- .../.snapshots/TestExampleFileMoreOptions | 30 +++++++++---------- generator/.snapshots/TestNoPrefixExampleFile | 30 +++++++++---------- .../TestNoPrefixExampleFileWithSnakeToCamel | 22 +++++++------- .../.snapshots/TestReplacePrefixExampleFile | 30 +++++++++---------- generator/generator.go | 8 +++-- generator/generator_1.18_test.go | 2 +- generator/generator_test.go | 2 +- go.mod | 1 + go.sum | 2 ++ main.go | 3 +- 17 files changed, 169 insertions(+), 163 deletions(-) diff --git a/generator/.snapshots/Test118CustomPrefixExampleFile-og b/generator/.snapshots/Test118CustomPrefixExampleFile-og index 37474107..2406e01e 100644 --- a/generator/.snapshots/Test118CustomPrefixExampleFile-og +++ b/generator/.snapshots/Test118CustomPrefixExampleFile-og @@ -2862,12 +2862,12 @@ (string) (len=43) "\tCustom_prefix_TestHyphen Sanitizing = iota", (string) (len=67) "\t// Custom_prefix_HyphenStart is a Sanitizing of type -HyphenStart.", (string) (len=26) "\tCustom_prefix_HyphenStart", - (string) (len=76) "\t// Custom_prefix__underscoreFirst is a Sanitizing of type _underscoreFirst.", - (string) (len=31) "\tCustom_prefix__underscoreFirst", - (string) (len=68) "\t// Custom_prefix_0numberFirst is a Sanitizing of type 0numberFirst.", - (string) (len=27) "\tCustom_prefix_0numberFirst", - (string) (len=64) "\t// Custom_prefix_123456789a is a Sanitizing of type 123456789a.", - (string) (len=25) "\tCustom_prefix_123456789a", + (string) (len=76) "\t// Custom_prefix__UnderscoreFirst is a Sanitizing of type _UnderscoreFirst.", + (string) (len=31) "\tCustom_prefix__UnderscoreFirst", + (string) (len=68) "\t// Custom_prefix_0NumberFirst is a Sanitizing of type 0NumberFirst.", + (string) (len=27) "\tCustom_prefix_0NumberFirst", + (string) (len=64) "\t// Custom_prefix_123456789A is a Sanitizing of type 123456789A.", + (string) (len=25) "\tCustom_prefix_123456789A", (string) (len=65) "\t// Custom_prefix_123123Asdf is a Sanitizing of type 123123-Asdf.", (string) (len=25) "\tCustom_prefix_123123Asdf", (string) (len=70) "\t// Custom_prefix_EndingHyphen is a Sanitizing of type Ending-Hyphen-.", @@ -2881,9 +2881,9 @@ (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", (string) (len=55) "\tCustom_prefix_TestHyphen: _SanitizingName[0:11],", (string) (len=56) "\tCustom_prefix_HyphenStart: _SanitizingName[11:23],", - (string) (len=56) "\tCustom_prefix__underscoreFirst: _SanitizingName[23:39],", - (string) (len=56) "\tCustom_prefix_0numberFirst: _SanitizingName[39:51],", - (string) (len=56) "\tCustom_prefix_123456789a: _SanitizingName[51:61],", + (string) (len=56) "\tCustom_prefix__UnderscoreFirst: _SanitizingName[23:39],", + (string) (len=56) "\tCustom_prefix_0NumberFirst: _SanitizingName[39:51],", + (string) (len=56) "\tCustom_prefix_123456789A: _SanitizingName[51:61],", (string) (len=56) "\tCustom_prefix_123123Asdf: _SanitizingName[61:72],", (string) (len=56) "\tCustom_prefix_EndingHyphen: _SanitizingName[72:86],", (string) (len=1) "}", @@ -2901,12 +2901,12 @@ (string) (len=67) "\tstrings.ToLower(_SanitizingName[0:11]): Custom_prefix_TestHyphen,", (string) (len=68) "\t_SanitizingName[11:23]: Custom_prefix_HyphenStart,", (string) (len=68) "\tstrings.ToLower(_SanitizingName[11:23]): Custom_prefix_HyphenStart,", - (string) (len=73) "\t_SanitizingName[23:39]: Custom_prefix__underscoreFirst,", - (string) (len=73) "\tstrings.ToLower(_SanitizingName[23:39]): Custom_prefix__underscoreFirst,", - (string) (len=69) "\t_SanitizingName[39:51]: Custom_prefix_0numberFirst,", - (string) (len=69) "\tstrings.ToLower(_SanitizingName[39:51]): Custom_prefix_0numberFirst,", - (string) (len=67) "\t_SanitizingName[51:61]: Custom_prefix_123456789a,", - (string) (len=67) "\tstrings.ToLower(_SanitizingName[51:61]): Custom_prefix_123456789a,", + (string) (len=73) "\t_SanitizingName[23:39]: Custom_prefix__UnderscoreFirst,", + (string) (len=73) "\tstrings.ToLower(_SanitizingName[23:39]): Custom_prefix__UnderscoreFirst,", + (string) (len=69) "\t_SanitizingName[39:51]: Custom_prefix_0NumberFirst,", + (string) (len=69) "\tstrings.ToLower(_SanitizingName[39:51]): Custom_prefix_0NumberFirst,", + (string) (len=67) "\t_SanitizingName[51:61]: Custom_prefix_123456789A,", + (string) (len=67) "\tstrings.ToLower(_SanitizingName[51:61]): Custom_prefix_123456789A,", (string) (len=67) "\t_SanitizingName[61:72]: Custom_prefix_123123Asdf,", (string) (len=67) "\tstrings.ToLower(_SanitizingName[61:72]): Custom_prefix_123123Asdf,", (string) (len=69) "\t_SanitizingName[72:86]: Custom_prefix_EndingHyphen,", diff --git a/generator/.snapshots/Test118ExampleFile-og b/generator/.snapshots/Test118ExampleFile-og index a6c6ecb5..2d71705a 100644 --- a/generator/.snapshots/Test118ExampleFile-og +++ b/generator/.snapshots/Test118ExampleFile-og @@ -1757,12 +1757,12 @@ (string) (len=39) "\tSanitizingTestHyphen Sanitizing = iota", (string) (len=63) "\t// SanitizingHyphenStart is a Sanitizing of type -HyphenStart.", (string) (len=22) "\tSanitizingHyphenStart", - (string) (len=72) "\t// Sanitizing_underscoreFirst is a Sanitizing of type _underscoreFirst.", - (string) (len=27) "\tSanitizing_underscoreFirst", - (string) (len=64) "\t// Sanitizing0numberFirst is a Sanitizing of type 0numberFirst.", - (string) (len=23) "\tSanitizing0numberFirst", - (string) (len=60) "\t// Sanitizing123456789a is a Sanitizing of type 123456789a.", - (string) (len=21) "\tSanitizing123456789a", + (string) (len=72) "\t// Sanitizing_UnderscoreFirst is a Sanitizing of type _UnderscoreFirst.", + (string) (len=27) "\tSanitizing_UnderscoreFirst", + (string) (len=64) "\t// Sanitizing0NumberFirst is a Sanitizing of type 0NumberFirst.", + (string) (len=23) "\tSanitizing0NumberFirst", + (string) (len=60) "\t// Sanitizing123456789A is a Sanitizing of type 123456789A.", + (string) (len=21) "\tSanitizing123456789A", (string) (len=61) "\t// Sanitizing123123Asdf is a Sanitizing of type 123123-Asdf.", (string) (len=21) "\tSanitizing123123Asdf", (string) (len=66) "\t// SanitizingEndingHyphen is a Sanitizing of type Ending-Hyphen-.", @@ -1793,9 +1793,9 @@ (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", (string) (len=51) "\tSanitizingTestHyphen: _SanitizingName[0:11],", (string) (len=52) "\tSanitizingHyphenStart: _SanitizingName[11:23],", - (string) (len=52) "\tSanitizing_underscoreFirst: _SanitizingName[23:39],", - (string) (len=52) "\tSanitizing0numberFirst: _SanitizingName[39:51],", - (string) (len=52) "\tSanitizing123456789a: _SanitizingName[51:61],", + (string) (len=52) "\tSanitizing_UnderscoreFirst: _SanitizingName[23:39],", + (string) (len=52) "\tSanitizing0NumberFirst: _SanitizingName[39:51],", + (string) (len=52) "\tSanitizing123456789A: _SanitizingName[51:61],", (string) (len=52) "\tSanitizing123123Asdf: _SanitizingName[61:72],", (string) (len=52) "\tSanitizingEndingHyphen: _SanitizingName[72:86],", (string) (len=1) "}", @@ -1813,12 +1813,12 @@ (string) (len=63) "\tstrings.ToLower(_SanitizingName[0:11]): SanitizingTestHyphen,", (string) (len=64) "\t_SanitizingName[11:23]: SanitizingHyphenStart,", (string) (len=64) "\tstrings.ToLower(_SanitizingName[11:23]): SanitizingHyphenStart,", - (string) (len=69) "\t_SanitizingName[23:39]: Sanitizing_underscoreFirst,", - (string) (len=69) "\tstrings.ToLower(_SanitizingName[23:39]): Sanitizing_underscoreFirst,", - (string) (len=65) "\t_SanitizingName[39:51]: Sanitizing0numberFirst,", - (string) (len=65) "\tstrings.ToLower(_SanitizingName[39:51]): Sanitizing0numberFirst,", - (string) (len=63) "\t_SanitizingName[51:61]: Sanitizing123456789a,", - (string) (len=63) "\tstrings.ToLower(_SanitizingName[51:61]): Sanitizing123456789a,", + (string) (len=69) "\t_SanitizingName[23:39]: Sanitizing_UnderscoreFirst,", + (string) (len=69) "\tstrings.ToLower(_SanitizingName[23:39]): Sanitizing_UnderscoreFirst,", + (string) (len=65) "\t_SanitizingName[39:51]: Sanitizing0NumberFirst,", + (string) (len=65) "\tstrings.ToLower(_SanitizingName[39:51]): Sanitizing0NumberFirst,", + (string) (len=63) "\t_SanitizingName[51:61]: Sanitizing123456789A,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[51:61]): Sanitizing123456789A,", (string) (len=63) "\t_SanitizingName[61:72]: Sanitizing123123Asdf,", (string) (len=63) "\tstrings.ToLower(_SanitizingName[61:72]): Sanitizing123123Asdf,", (string) (len=65) "\t_SanitizingName[72:86]: SanitizingEndingHyphen,", diff --git a/generator/.snapshots/Test118ExampleFileMoreOptions-og b/generator/.snapshots/Test118ExampleFileMoreOptions-og index c0973f73..cea36139 100644 --- a/generator/.snapshots/Test118ExampleFileMoreOptions-og +++ b/generator/.snapshots/Test118ExampleFileMoreOptions-og @@ -1897,12 +1897,12 @@ (string) (len=39) "\tSanitizingTestHyphen Sanitizing = iota", (string) (len=63) "\t// SanitizingHyphenStart is a Sanitizing of type -HyphenStart.", (string) (len=22) "\tSanitizingHyphenStart", - (string) (len=72) "\t// Sanitizing_underscoreFirst is a Sanitizing of type _underscoreFirst.", - (string) (len=27) "\tSanitizing_underscoreFirst", - (string) (len=64) "\t// Sanitizing0numberFirst is a Sanitizing of type 0numberFirst.", - (string) (len=23) "\tSanitizing0numberFirst", - (string) (len=60) "\t// Sanitizing123456789a is a Sanitizing of type 123456789a.", - (string) (len=21) "\tSanitizing123456789a", + (string) (len=72) "\t// Sanitizing_UnderscoreFirst is a Sanitizing of type _UnderscoreFirst.", + (string) (len=27) "\tSanitizing_UnderscoreFirst", + (string) (len=64) "\t// Sanitizing0NumberFirst is a Sanitizing of type 0NumberFirst.", + (string) (len=23) "\tSanitizing0NumberFirst", + (string) (len=60) "\t// Sanitizing123456789A is a Sanitizing of type 123456789A.", + (string) (len=21) "\tSanitizing123456789A", (string) (len=61) "\t// Sanitizing123123Asdf is a Sanitizing of type 123123-Asdf.", (string) (len=21) "\tSanitizing123123Asdf", (string) (len=66) "\t// SanitizingEndingHyphen is a Sanitizing of type Ending-Hyphen-.", @@ -1933,9 +1933,9 @@ (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", (string) (len=51) "\tSanitizingTestHyphen: _SanitizingName[0:11],", (string) (len=52) "\tSanitizingHyphenStart: _SanitizingName[11:23],", - (string) (len=52) "\tSanitizing_underscoreFirst: _SanitizingName[23:39],", - (string) (len=52) "\tSanitizing0numberFirst: _SanitizingName[39:51],", - (string) (len=52) "\tSanitizing123456789a: _SanitizingName[51:61],", + (string) (len=52) "\tSanitizing_UnderscoreFirst: _SanitizingName[23:39],", + (string) (len=52) "\tSanitizing0NumberFirst: _SanitizingName[39:51],", + (string) (len=52) "\tSanitizing123456789A: _SanitizingName[51:61],", (string) (len=52) "\tSanitizing123123Asdf: _SanitizingName[61:72],", (string) (len=52) "\tSanitizingEndingHyphen: _SanitizingName[72:86],", (string) (len=1) "}", @@ -1953,12 +1953,12 @@ (string) (len=63) "\tstrings.ToLower(_SanitizingName[0:11]): SanitizingTestHyphen,", (string) (len=64) "\t_SanitizingName[11:23]: SanitizingHyphenStart,", (string) (len=64) "\tstrings.ToLower(_SanitizingName[11:23]): SanitizingHyphenStart,", - (string) (len=69) "\t_SanitizingName[23:39]: Sanitizing_underscoreFirst,", - (string) (len=69) "\tstrings.ToLower(_SanitizingName[23:39]): Sanitizing_underscoreFirst,", - (string) (len=65) "\t_SanitizingName[39:51]: Sanitizing0numberFirst,", - (string) (len=65) "\tstrings.ToLower(_SanitizingName[39:51]): Sanitizing0numberFirst,", - (string) (len=63) "\t_SanitizingName[51:61]: Sanitizing123456789a,", - (string) (len=63) "\tstrings.ToLower(_SanitizingName[51:61]): Sanitizing123456789a,", + (string) (len=69) "\t_SanitizingName[23:39]: Sanitizing_UnderscoreFirst,", + (string) (len=69) "\tstrings.ToLower(_SanitizingName[23:39]): Sanitizing_UnderscoreFirst,", + (string) (len=65) "\t_SanitizingName[39:51]: Sanitizing0NumberFirst,", + (string) (len=65) "\tstrings.ToLower(_SanitizingName[39:51]): Sanitizing0NumberFirst,", + (string) (len=63) "\t_SanitizingName[51:61]: Sanitizing123456789A,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[51:61]): Sanitizing123456789A,", (string) (len=63) "\t_SanitizingName[61:72]: Sanitizing123123Asdf,", (string) (len=63) "\tstrings.ToLower(_SanitizingName[61:72]): Sanitizing123123Asdf,", (string) (len=65) "\t_SanitizingName[72:86]: SanitizingEndingHyphen,", diff --git a/generator/.snapshots/Test118NoPrefixExampleFile-og b/generator/.snapshots/Test118NoPrefixExampleFile-og index 17990e9b..cc893268 100644 --- a/generator/.snapshots/Test118NoPrefixExampleFile-og +++ b/generator/.snapshots/Test118NoPrefixExampleFile-og @@ -989,12 +989,12 @@ (string) (len=29) "\tTestHyphen Sanitizing = iota", (string) (len=54) "\t// XHyphenStart is a Sanitizing of type -HyphenStart.", (string) (len=13) "\tXHyphenStart", - (string) (len=63) "\t// X_underscoreFirst is a Sanitizing of type _underscoreFirst.", - (string) (len=18) "\tX_underscoreFirst", - (string) (len=55) "\t// X0numberFirst is a Sanitizing of type 0numberFirst.", - (string) (len=14) "\tX0numberFirst", - (string) (len=51) "\t// X123456789a is a Sanitizing of type 123456789a.", - (string) (len=12) "\tX123456789a", + (string) (len=63) "\t// X_UnderscoreFirst is a Sanitizing of type _UnderscoreFirst.", + (string) (len=18) "\tX_UnderscoreFirst", + (string) (len=55) "\t// X0NumberFirst is a Sanitizing of type 0NumberFirst.", + (string) (len=14) "\tX0NumberFirst", + (string) (len=51) "\t// X123456789A is a Sanitizing of type 123456789A.", + (string) (len=12) "\tX123456789A", (string) (len=52) "\t// X123123Asdf is a Sanitizing of type 123123-Asdf.", (string) (len=12) "\tX123123Asdf", (string) (len=56) "\t// EndingHyphen is a Sanitizing of type Ending-Hyphen-.", @@ -1008,9 +1008,9 @@ (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", (string) (len=42) "\tTestHyphen: _SanitizingName[0:11],", (string) (len=43) "\tXHyphenStart: _SanitizingName[11:23],", - (string) (len=43) "\tX_underscoreFirst: _SanitizingName[23:39],", - (string) (len=43) "\tX0numberFirst: _SanitizingName[39:51],", - (string) (len=43) "\tX123456789a: _SanitizingName[51:61],", + (string) (len=43) "\tX_UnderscoreFirst: _SanitizingName[23:39],", + (string) (len=43) "\tX0NumberFirst: _SanitizingName[39:51],", + (string) (len=43) "\tX123456789A: _SanitizingName[51:61],", (string) (len=43) "\tX123123Asdf: _SanitizingName[61:72],", (string) (len=43) "\tEndingHyphen: _SanitizingName[72:86],", (string) (len=1) "}", @@ -1028,12 +1028,12 @@ (string) (len=53) "\tstrings.ToLower(_SanitizingName[0:11]): TestHyphen,", (string) (len=55) "\t_SanitizingName[11:23]: XHyphenStart,", (string) (len=55) "\tstrings.ToLower(_SanitizingName[11:23]): XHyphenStart,", - (string) (len=60) "\t_SanitizingName[23:39]: X_underscoreFirst,", - (string) (len=60) "\tstrings.ToLower(_SanitizingName[23:39]): X_underscoreFirst,", - (string) (len=56) "\t_SanitizingName[39:51]: X0numberFirst,", - (string) (len=56) "\tstrings.ToLower(_SanitizingName[39:51]): X0numberFirst,", - (string) (len=54) "\t_SanitizingName[51:61]: X123456789a,", - (string) (len=54) "\tstrings.ToLower(_SanitizingName[51:61]): X123456789a,", + (string) (len=60) "\t_SanitizingName[23:39]: X_UnderscoreFirst,", + (string) (len=60) "\tstrings.ToLower(_SanitizingName[23:39]): X_UnderscoreFirst,", + (string) (len=56) "\t_SanitizingName[39:51]: X0NumberFirst,", + (string) (len=56) "\tstrings.ToLower(_SanitizingName[39:51]): X0NumberFirst,", + (string) (len=54) "\t_SanitizingName[51:61]: X123456789A,", + (string) (len=54) "\tstrings.ToLower(_SanitizingName[51:61]): X123456789A,", (string) (len=54) "\t_SanitizingName[61:72]: X123123Asdf,", (string) (len=54) "\tstrings.ToLower(_SanitizingName[61:72]): X123123Asdf,", (string) (len=55) "\t_SanitizingName[72:86]: EndingHyphen,", diff --git a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og index d4b375f5..e7101c33 100644 --- a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og +++ b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og @@ -989,12 +989,12 @@ (string) (len=29) "\tTestHyphen Sanitizing = iota", (string) (len=54) "\t// XHyphenStart is a Sanitizing of type -HyphenStart.", (string) (len=13) "\tXHyphenStart", - (string) (len=62) "\t// XUnderscoreFirst is a Sanitizing of type _underscoreFirst.", + (string) (len=62) "\t// XUnderscoreFirst is a Sanitizing of type _UnderscoreFirst.", (string) (len=17) "\tXUnderscoreFirst", - (string) (len=55) "\t// X0numberFirst is a Sanitizing of type 0numberFirst.", - (string) (len=14) "\tX0numberFirst", - (string) (len=51) "\t// X123456789a is a Sanitizing of type 123456789a.", - (string) (len=12) "\tX123456789a", + (string) (len=55) "\t// X0NumberFirst is a Sanitizing of type 0NumberFirst.", + (string) (len=14) "\tX0NumberFirst", + (string) (len=51) "\t// X123456789A is a Sanitizing of type 123456789A.", + (string) (len=12) "\tX123456789A", (string) (len=52) "\t// X123123Asdf is a Sanitizing of type 123123-Asdf.", (string) (len=12) "\tX123123Asdf", (string) (len=56) "\t// EndingHyphen is a Sanitizing of type Ending-Hyphen-.", @@ -1009,8 +1009,8 @@ (string) (len=41) "\tTestHyphen: _SanitizingName[0:11],", (string) (len=42) "\tXHyphenStart: _SanitizingName[11:23],", (string) (len=42) "\tXUnderscoreFirst: _SanitizingName[23:39],", - (string) (len=42) "\tX0numberFirst: _SanitizingName[39:51],", - (string) (len=42) "\tX123456789a: _SanitizingName[51:61],", + (string) (len=42) "\tX0NumberFirst: _SanitizingName[39:51],", + (string) (len=42) "\tX123456789A: _SanitizingName[51:61],", (string) (len=42) "\tX123123Asdf: _SanitizingName[61:72],", (string) (len=42) "\tEndingHyphen: _SanitizingName[72:86],", (string) (len=1) "}", @@ -1030,10 +1030,10 @@ (string) (len=55) "\tstrings.ToLower(_SanitizingName[11:23]): XHyphenStart,", (string) (len=59) "\t_SanitizingName[23:39]: XUnderscoreFirst,", (string) (len=59) "\tstrings.ToLower(_SanitizingName[23:39]): XUnderscoreFirst,", - (string) (len=56) "\t_SanitizingName[39:51]: X0numberFirst,", - (string) (len=56) "\tstrings.ToLower(_SanitizingName[39:51]): X0numberFirst,", - (string) (len=54) "\t_SanitizingName[51:61]: X123456789a,", - (string) (len=54) "\tstrings.ToLower(_SanitizingName[51:61]): X123456789a,", + (string) (len=56) "\t_SanitizingName[39:51]: X0NumberFirst,", + (string) (len=56) "\tstrings.ToLower(_SanitizingName[39:51]): X0NumberFirst,", + (string) (len=54) "\t_SanitizingName[51:61]: X123456789A,", + (string) (len=54) "\tstrings.ToLower(_SanitizingName[51:61]): X123456789A,", (string) (len=54) "\t_SanitizingName[61:72]: X123123Asdf,", (string) (len=54) "\tstrings.ToLower(_SanitizingName[61:72]): X123123Asdf,", (string) (len=55) "\t_SanitizingName[72:86]: EndingHyphen,", diff --git a/generator/.snapshots/TestCustomPrefixExampleFile b/generator/.snapshots/TestCustomPrefixExampleFile index 37474107..2406e01e 100644 --- a/generator/.snapshots/TestCustomPrefixExampleFile +++ b/generator/.snapshots/TestCustomPrefixExampleFile @@ -2862,12 +2862,12 @@ (string) (len=43) "\tCustom_prefix_TestHyphen Sanitizing = iota", (string) (len=67) "\t// Custom_prefix_HyphenStart is a Sanitizing of type -HyphenStart.", (string) (len=26) "\tCustom_prefix_HyphenStart", - (string) (len=76) "\t// Custom_prefix__underscoreFirst is a Sanitizing of type _underscoreFirst.", - (string) (len=31) "\tCustom_prefix__underscoreFirst", - (string) (len=68) "\t// Custom_prefix_0numberFirst is a Sanitizing of type 0numberFirst.", - (string) (len=27) "\tCustom_prefix_0numberFirst", - (string) (len=64) "\t// Custom_prefix_123456789a is a Sanitizing of type 123456789a.", - (string) (len=25) "\tCustom_prefix_123456789a", + (string) (len=76) "\t// Custom_prefix__UnderscoreFirst is a Sanitizing of type _UnderscoreFirst.", + (string) (len=31) "\tCustom_prefix__UnderscoreFirst", + (string) (len=68) "\t// Custom_prefix_0NumberFirst is a Sanitizing of type 0NumberFirst.", + (string) (len=27) "\tCustom_prefix_0NumberFirst", + (string) (len=64) "\t// Custom_prefix_123456789A is a Sanitizing of type 123456789A.", + (string) (len=25) "\tCustom_prefix_123456789A", (string) (len=65) "\t// Custom_prefix_123123Asdf is a Sanitizing of type 123123-Asdf.", (string) (len=25) "\tCustom_prefix_123123Asdf", (string) (len=70) "\t// Custom_prefix_EndingHyphen is a Sanitizing of type Ending-Hyphen-.", @@ -2881,9 +2881,9 @@ (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", (string) (len=55) "\tCustom_prefix_TestHyphen: _SanitizingName[0:11],", (string) (len=56) "\tCustom_prefix_HyphenStart: _SanitizingName[11:23],", - (string) (len=56) "\tCustom_prefix__underscoreFirst: _SanitizingName[23:39],", - (string) (len=56) "\tCustom_prefix_0numberFirst: _SanitizingName[39:51],", - (string) (len=56) "\tCustom_prefix_123456789a: _SanitizingName[51:61],", + (string) (len=56) "\tCustom_prefix__UnderscoreFirst: _SanitizingName[23:39],", + (string) (len=56) "\tCustom_prefix_0NumberFirst: _SanitizingName[39:51],", + (string) (len=56) "\tCustom_prefix_123456789A: _SanitizingName[51:61],", (string) (len=56) "\tCustom_prefix_123123Asdf: _SanitizingName[61:72],", (string) (len=56) "\tCustom_prefix_EndingHyphen: _SanitizingName[72:86],", (string) (len=1) "}", @@ -2901,12 +2901,12 @@ (string) (len=67) "\tstrings.ToLower(_SanitizingName[0:11]): Custom_prefix_TestHyphen,", (string) (len=68) "\t_SanitizingName[11:23]: Custom_prefix_HyphenStart,", (string) (len=68) "\tstrings.ToLower(_SanitizingName[11:23]): Custom_prefix_HyphenStart,", - (string) (len=73) "\t_SanitizingName[23:39]: Custom_prefix__underscoreFirst,", - (string) (len=73) "\tstrings.ToLower(_SanitizingName[23:39]): Custom_prefix__underscoreFirst,", - (string) (len=69) "\t_SanitizingName[39:51]: Custom_prefix_0numberFirst,", - (string) (len=69) "\tstrings.ToLower(_SanitizingName[39:51]): Custom_prefix_0numberFirst,", - (string) (len=67) "\t_SanitizingName[51:61]: Custom_prefix_123456789a,", - (string) (len=67) "\tstrings.ToLower(_SanitizingName[51:61]): Custom_prefix_123456789a,", + (string) (len=73) "\t_SanitizingName[23:39]: Custom_prefix__UnderscoreFirst,", + (string) (len=73) "\tstrings.ToLower(_SanitizingName[23:39]): Custom_prefix__UnderscoreFirst,", + (string) (len=69) "\t_SanitizingName[39:51]: Custom_prefix_0NumberFirst,", + (string) (len=69) "\tstrings.ToLower(_SanitizingName[39:51]): Custom_prefix_0NumberFirst,", + (string) (len=67) "\t_SanitizingName[51:61]: Custom_prefix_123456789A,", + (string) (len=67) "\tstrings.ToLower(_SanitizingName[51:61]): Custom_prefix_123456789A,", (string) (len=67) "\t_SanitizingName[61:72]: Custom_prefix_123123Asdf,", (string) (len=67) "\tstrings.ToLower(_SanitizingName[61:72]): Custom_prefix_123123Asdf,", (string) (len=69) "\t_SanitizingName[72:86]: Custom_prefix_EndingHyphen,", diff --git a/generator/.snapshots/TestExampleFile b/generator/.snapshots/TestExampleFile index a6c6ecb5..2d71705a 100644 --- a/generator/.snapshots/TestExampleFile +++ b/generator/.snapshots/TestExampleFile @@ -1757,12 +1757,12 @@ (string) (len=39) "\tSanitizingTestHyphen Sanitizing = iota", (string) (len=63) "\t// SanitizingHyphenStart is a Sanitizing of type -HyphenStart.", (string) (len=22) "\tSanitizingHyphenStart", - (string) (len=72) "\t// Sanitizing_underscoreFirst is a Sanitizing of type _underscoreFirst.", - (string) (len=27) "\tSanitizing_underscoreFirst", - (string) (len=64) "\t// Sanitizing0numberFirst is a Sanitizing of type 0numberFirst.", - (string) (len=23) "\tSanitizing0numberFirst", - (string) (len=60) "\t// Sanitizing123456789a is a Sanitizing of type 123456789a.", - (string) (len=21) "\tSanitizing123456789a", + (string) (len=72) "\t// Sanitizing_UnderscoreFirst is a Sanitizing of type _UnderscoreFirst.", + (string) (len=27) "\tSanitizing_UnderscoreFirst", + (string) (len=64) "\t// Sanitizing0NumberFirst is a Sanitizing of type 0NumberFirst.", + (string) (len=23) "\tSanitizing0NumberFirst", + (string) (len=60) "\t// Sanitizing123456789A is a Sanitizing of type 123456789A.", + (string) (len=21) "\tSanitizing123456789A", (string) (len=61) "\t// Sanitizing123123Asdf is a Sanitizing of type 123123-Asdf.", (string) (len=21) "\tSanitizing123123Asdf", (string) (len=66) "\t// SanitizingEndingHyphen is a Sanitizing of type Ending-Hyphen-.", @@ -1793,9 +1793,9 @@ (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", (string) (len=51) "\tSanitizingTestHyphen: _SanitizingName[0:11],", (string) (len=52) "\tSanitizingHyphenStart: _SanitizingName[11:23],", - (string) (len=52) "\tSanitizing_underscoreFirst: _SanitizingName[23:39],", - (string) (len=52) "\tSanitizing0numberFirst: _SanitizingName[39:51],", - (string) (len=52) "\tSanitizing123456789a: _SanitizingName[51:61],", + (string) (len=52) "\tSanitizing_UnderscoreFirst: _SanitizingName[23:39],", + (string) (len=52) "\tSanitizing0NumberFirst: _SanitizingName[39:51],", + (string) (len=52) "\tSanitizing123456789A: _SanitizingName[51:61],", (string) (len=52) "\tSanitizing123123Asdf: _SanitizingName[61:72],", (string) (len=52) "\tSanitizingEndingHyphen: _SanitizingName[72:86],", (string) (len=1) "}", @@ -1813,12 +1813,12 @@ (string) (len=63) "\tstrings.ToLower(_SanitizingName[0:11]): SanitizingTestHyphen,", (string) (len=64) "\t_SanitizingName[11:23]: SanitizingHyphenStart,", (string) (len=64) "\tstrings.ToLower(_SanitizingName[11:23]): SanitizingHyphenStart,", - (string) (len=69) "\t_SanitizingName[23:39]: Sanitizing_underscoreFirst,", - (string) (len=69) "\tstrings.ToLower(_SanitizingName[23:39]): Sanitizing_underscoreFirst,", - (string) (len=65) "\t_SanitizingName[39:51]: Sanitizing0numberFirst,", - (string) (len=65) "\tstrings.ToLower(_SanitizingName[39:51]): Sanitizing0numberFirst,", - (string) (len=63) "\t_SanitizingName[51:61]: Sanitizing123456789a,", - (string) (len=63) "\tstrings.ToLower(_SanitizingName[51:61]): Sanitizing123456789a,", + (string) (len=69) "\t_SanitizingName[23:39]: Sanitizing_UnderscoreFirst,", + (string) (len=69) "\tstrings.ToLower(_SanitizingName[23:39]): Sanitizing_UnderscoreFirst,", + (string) (len=65) "\t_SanitizingName[39:51]: Sanitizing0NumberFirst,", + (string) (len=65) "\tstrings.ToLower(_SanitizingName[39:51]): Sanitizing0NumberFirst,", + (string) (len=63) "\t_SanitizingName[51:61]: Sanitizing123456789A,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[51:61]): Sanitizing123456789A,", (string) (len=63) "\t_SanitizingName[61:72]: Sanitizing123123Asdf,", (string) (len=63) "\tstrings.ToLower(_SanitizingName[61:72]): Sanitizing123123Asdf,", (string) (len=65) "\t_SanitizingName[72:86]: SanitizingEndingHyphen,", diff --git a/generator/.snapshots/TestExampleFileMoreOptions b/generator/.snapshots/TestExampleFileMoreOptions index c0973f73..cea36139 100644 --- a/generator/.snapshots/TestExampleFileMoreOptions +++ b/generator/.snapshots/TestExampleFileMoreOptions @@ -1897,12 +1897,12 @@ (string) (len=39) "\tSanitizingTestHyphen Sanitizing = iota", (string) (len=63) "\t// SanitizingHyphenStart is a Sanitizing of type -HyphenStart.", (string) (len=22) "\tSanitizingHyphenStart", - (string) (len=72) "\t// Sanitizing_underscoreFirst is a Sanitizing of type _underscoreFirst.", - (string) (len=27) "\tSanitizing_underscoreFirst", - (string) (len=64) "\t// Sanitizing0numberFirst is a Sanitizing of type 0numberFirst.", - (string) (len=23) "\tSanitizing0numberFirst", - (string) (len=60) "\t// Sanitizing123456789a is a Sanitizing of type 123456789a.", - (string) (len=21) "\tSanitizing123456789a", + (string) (len=72) "\t// Sanitizing_UnderscoreFirst is a Sanitizing of type _UnderscoreFirst.", + (string) (len=27) "\tSanitizing_UnderscoreFirst", + (string) (len=64) "\t// Sanitizing0NumberFirst is a Sanitizing of type 0NumberFirst.", + (string) (len=23) "\tSanitizing0NumberFirst", + (string) (len=60) "\t// Sanitizing123456789A is a Sanitizing of type 123456789A.", + (string) (len=21) "\tSanitizing123456789A", (string) (len=61) "\t// Sanitizing123123Asdf is a Sanitizing of type 123123-Asdf.", (string) (len=21) "\tSanitizing123123Asdf", (string) (len=66) "\t// SanitizingEndingHyphen is a Sanitizing of type Ending-Hyphen-.", @@ -1933,9 +1933,9 @@ (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", (string) (len=51) "\tSanitizingTestHyphen: _SanitizingName[0:11],", (string) (len=52) "\tSanitizingHyphenStart: _SanitizingName[11:23],", - (string) (len=52) "\tSanitizing_underscoreFirst: _SanitizingName[23:39],", - (string) (len=52) "\tSanitizing0numberFirst: _SanitizingName[39:51],", - (string) (len=52) "\tSanitizing123456789a: _SanitizingName[51:61],", + (string) (len=52) "\tSanitizing_UnderscoreFirst: _SanitizingName[23:39],", + (string) (len=52) "\tSanitizing0NumberFirst: _SanitizingName[39:51],", + (string) (len=52) "\tSanitizing123456789A: _SanitizingName[51:61],", (string) (len=52) "\tSanitizing123123Asdf: _SanitizingName[61:72],", (string) (len=52) "\tSanitizingEndingHyphen: _SanitizingName[72:86],", (string) (len=1) "}", @@ -1953,12 +1953,12 @@ (string) (len=63) "\tstrings.ToLower(_SanitizingName[0:11]): SanitizingTestHyphen,", (string) (len=64) "\t_SanitizingName[11:23]: SanitizingHyphenStart,", (string) (len=64) "\tstrings.ToLower(_SanitizingName[11:23]): SanitizingHyphenStart,", - (string) (len=69) "\t_SanitizingName[23:39]: Sanitizing_underscoreFirst,", - (string) (len=69) "\tstrings.ToLower(_SanitizingName[23:39]): Sanitizing_underscoreFirst,", - (string) (len=65) "\t_SanitizingName[39:51]: Sanitizing0numberFirst,", - (string) (len=65) "\tstrings.ToLower(_SanitizingName[39:51]): Sanitizing0numberFirst,", - (string) (len=63) "\t_SanitizingName[51:61]: Sanitizing123456789a,", - (string) (len=63) "\tstrings.ToLower(_SanitizingName[51:61]): Sanitizing123456789a,", + (string) (len=69) "\t_SanitizingName[23:39]: Sanitizing_UnderscoreFirst,", + (string) (len=69) "\tstrings.ToLower(_SanitizingName[23:39]): Sanitizing_UnderscoreFirst,", + (string) (len=65) "\t_SanitizingName[39:51]: Sanitizing0NumberFirst,", + (string) (len=65) "\tstrings.ToLower(_SanitizingName[39:51]): Sanitizing0NumberFirst,", + (string) (len=63) "\t_SanitizingName[51:61]: Sanitizing123456789A,", + (string) (len=63) "\tstrings.ToLower(_SanitizingName[51:61]): Sanitizing123456789A,", (string) (len=63) "\t_SanitizingName[61:72]: Sanitizing123123Asdf,", (string) (len=63) "\tstrings.ToLower(_SanitizingName[61:72]): Sanitizing123123Asdf,", (string) (len=65) "\t_SanitizingName[72:86]: SanitizingEndingHyphen,", diff --git a/generator/.snapshots/TestNoPrefixExampleFile b/generator/.snapshots/TestNoPrefixExampleFile index 17990e9b..cc893268 100644 --- a/generator/.snapshots/TestNoPrefixExampleFile +++ b/generator/.snapshots/TestNoPrefixExampleFile @@ -989,12 +989,12 @@ (string) (len=29) "\tTestHyphen Sanitizing = iota", (string) (len=54) "\t// XHyphenStart is a Sanitizing of type -HyphenStart.", (string) (len=13) "\tXHyphenStart", - (string) (len=63) "\t// X_underscoreFirst is a Sanitizing of type _underscoreFirst.", - (string) (len=18) "\tX_underscoreFirst", - (string) (len=55) "\t// X0numberFirst is a Sanitizing of type 0numberFirst.", - (string) (len=14) "\tX0numberFirst", - (string) (len=51) "\t// X123456789a is a Sanitizing of type 123456789a.", - (string) (len=12) "\tX123456789a", + (string) (len=63) "\t// X_UnderscoreFirst is a Sanitizing of type _UnderscoreFirst.", + (string) (len=18) "\tX_UnderscoreFirst", + (string) (len=55) "\t// X0NumberFirst is a Sanitizing of type 0NumberFirst.", + (string) (len=14) "\tX0NumberFirst", + (string) (len=51) "\t// X123456789A is a Sanitizing of type 123456789A.", + (string) (len=12) "\tX123456789A", (string) (len=52) "\t// X123123Asdf is a Sanitizing of type 123123-Asdf.", (string) (len=12) "\tX123123Asdf", (string) (len=56) "\t// EndingHyphen is a Sanitizing of type Ending-Hyphen-.", @@ -1008,9 +1008,9 @@ (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", (string) (len=42) "\tTestHyphen: _SanitizingName[0:11],", (string) (len=43) "\tXHyphenStart: _SanitizingName[11:23],", - (string) (len=43) "\tX_underscoreFirst: _SanitizingName[23:39],", - (string) (len=43) "\tX0numberFirst: _SanitizingName[39:51],", - (string) (len=43) "\tX123456789a: _SanitizingName[51:61],", + (string) (len=43) "\tX_UnderscoreFirst: _SanitizingName[23:39],", + (string) (len=43) "\tX0NumberFirst: _SanitizingName[39:51],", + (string) (len=43) "\tX123456789A: _SanitizingName[51:61],", (string) (len=43) "\tX123123Asdf: _SanitizingName[61:72],", (string) (len=43) "\tEndingHyphen: _SanitizingName[72:86],", (string) (len=1) "}", @@ -1028,12 +1028,12 @@ (string) (len=53) "\tstrings.ToLower(_SanitizingName[0:11]): TestHyphen,", (string) (len=55) "\t_SanitizingName[11:23]: XHyphenStart,", (string) (len=55) "\tstrings.ToLower(_SanitizingName[11:23]): XHyphenStart,", - (string) (len=60) "\t_SanitizingName[23:39]: X_underscoreFirst,", - (string) (len=60) "\tstrings.ToLower(_SanitizingName[23:39]): X_underscoreFirst,", - (string) (len=56) "\t_SanitizingName[39:51]: X0numberFirst,", - (string) (len=56) "\tstrings.ToLower(_SanitizingName[39:51]): X0numberFirst,", - (string) (len=54) "\t_SanitizingName[51:61]: X123456789a,", - (string) (len=54) "\tstrings.ToLower(_SanitizingName[51:61]): X123456789a,", + (string) (len=60) "\t_SanitizingName[23:39]: X_UnderscoreFirst,", + (string) (len=60) "\tstrings.ToLower(_SanitizingName[23:39]): X_UnderscoreFirst,", + (string) (len=56) "\t_SanitizingName[39:51]: X0NumberFirst,", + (string) (len=56) "\tstrings.ToLower(_SanitizingName[39:51]): X0NumberFirst,", + (string) (len=54) "\t_SanitizingName[51:61]: X123456789A,", + (string) (len=54) "\tstrings.ToLower(_SanitizingName[51:61]): X123456789A,", (string) (len=54) "\t_SanitizingName[61:72]: X123123Asdf,", (string) (len=54) "\tstrings.ToLower(_SanitizingName[61:72]): X123123Asdf,", (string) (len=55) "\t_SanitizingName[72:86]: EndingHyphen,", diff --git a/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel b/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel index d4b375f5..e7101c33 100644 --- a/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel +++ b/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel @@ -989,12 +989,12 @@ (string) (len=29) "\tTestHyphen Sanitizing = iota", (string) (len=54) "\t// XHyphenStart is a Sanitizing of type -HyphenStart.", (string) (len=13) "\tXHyphenStart", - (string) (len=62) "\t// XUnderscoreFirst is a Sanitizing of type _underscoreFirst.", + (string) (len=62) "\t// XUnderscoreFirst is a Sanitizing of type _UnderscoreFirst.", (string) (len=17) "\tXUnderscoreFirst", - (string) (len=55) "\t// X0numberFirst is a Sanitizing of type 0numberFirst.", - (string) (len=14) "\tX0numberFirst", - (string) (len=51) "\t// X123456789a is a Sanitizing of type 123456789a.", - (string) (len=12) "\tX123456789a", + (string) (len=55) "\t// X0NumberFirst is a Sanitizing of type 0NumberFirst.", + (string) (len=14) "\tX0NumberFirst", + (string) (len=51) "\t// X123456789A is a Sanitizing of type 123456789A.", + (string) (len=12) "\tX123456789A", (string) (len=52) "\t// X123123Asdf is a Sanitizing of type 123123-Asdf.", (string) (len=12) "\tX123123Asdf", (string) (len=56) "\t// EndingHyphen is a Sanitizing of type Ending-Hyphen-.", @@ -1009,8 +1009,8 @@ (string) (len=41) "\tTestHyphen: _SanitizingName[0:11],", (string) (len=42) "\tXHyphenStart: _SanitizingName[11:23],", (string) (len=42) "\tXUnderscoreFirst: _SanitizingName[23:39],", - (string) (len=42) "\tX0numberFirst: _SanitizingName[39:51],", - (string) (len=42) "\tX123456789a: _SanitizingName[51:61],", + (string) (len=42) "\tX0NumberFirst: _SanitizingName[39:51],", + (string) (len=42) "\tX123456789A: _SanitizingName[51:61],", (string) (len=42) "\tX123123Asdf: _SanitizingName[61:72],", (string) (len=42) "\tEndingHyphen: _SanitizingName[72:86],", (string) (len=1) "}", @@ -1030,10 +1030,10 @@ (string) (len=55) "\tstrings.ToLower(_SanitizingName[11:23]): XHyphenStart,", (string) (len=59) "\t_SanitizingName[23:39]: XUnderscoreFirst,", (string) (len=59) "\tstrings.ToLower(_SanitizingName[23:39]): XUnderscoreFirst,", - (string) (len=56) "\t_SanitizingName[39:51]: X0numberFirst,", - (string) (len=56) "\tstrings.ToLower(_SanitizingName[39:51]): X0numberFirst,", - (string) (len=54) "\t_SanitizingName[51:61]: X123456789a,", - (string) (len=54) "\tstrings.ToLower(_SanitizingName[51:61]): X123456789a,", + (string) (len=56) "\t_SanitizingName[39:51]: X0NumberFirst,", + (string) (len=56) "\tstrings.ToLower(_SanitizingName[39:51]): X0NumberFirst,", + (string) (len=54) "\t_SanitizingName[51:61]: X123456789A,", + (string) (len=54) "\tstrings.ToLower(_SanitizingName[51:61]): X123456789A,", (string) (len=54) "\t_SanitizingName[61:72]: X123123Asdf,", (string) (len=54) "\tstrings.ToLower(_SanitizingName[61:72]): X123123Asdf,", (string) (len=55) "\t_SanitizingName[72:86]: EndingHyphen,", diff --git a/generator/.snapshots/TestReplacePrefixExampleFile b/generator/.snapshots/TestReplacePrefixExampleFile index 852cf964..e6f3a13e 100644 --- a/generator/.snapshots/TestReplacePrefixExampleFile +++ b/generator/.snapshots/TestReplacePrefixExampleFile @@ -989,12 +989,12 @@ (string) (len=38) "\tMyPrefix_TestHyphen Sanitizing = iota", (string) (len=62) "\t// MyPrefix_HyphenStart is a Sanitizing of type -HyphenStart.", (string) (len=21) "\tMyPrefix_HyphenStart", - (string) (len=71) "\t// MyPrefix__underscoreFirst is a Sanitizing of type _underscoreFirst.", - (string) (len=26) "\tMyPrefix__underscoreFirst", - (string) (len=63) "\t// MyPrefix_0numberFirst is a Sanitizing of type 0numberFirst.", - (string) (len=22) "\tMyPrefix_0numberFirst", - (string) (len=59) "\t// MyPrefix_123456789a is a Sanitizing of type 123456789a.", - (string) (len=20) "\tMyPrefix_123456789a", + (string) (len=71) "\t// MyPrefix__UnderscoreFirst is a Sanitizing of type _UnderscoreFirst.", + (string) (len=26) "\tMyPrefix__UnderscoreFirst", + (string) (len=63) "\t// MyPrefix_0NumberFirst is a Sanitizing of type 0NumberFirst.", + (string) (len=22) "\tMyPrefix_0NumberFirst", + (string) (len=59) "\t// MyPrefix_123456789A is a Sanitizing of type 123456789A.", + (string) (len=20) "\tMyPrefix_123456789A", (string) (len=60) "\t// MyPrefix_123123Asdf is a Sanitizing of type 123123-Asdf.", (string) (len=20) "\tMyPrefix_123123Asdf", (string) (len=65) "\t// MyPrefix_EndingHyphen is a Sanitizing of type Ending-Hyphen-.", @@ -1008,9 +1008,9 @@ (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", (string) (len=50) "\tMyPrefix_TestHyphen: _SanitizingName[0:11],", (string) (len=51) "\tMyPrefix_HyphenStart: _SanitizingName[11:23],", - (string) (len=51) "\tMyPrefix__underscoreFirst: _SanitizingName[23:39],", - (string) (len=51) "\tMyPrefix_0numberFirst: _SanitizingName[39:51],", - (string) (len=51) "\tMyPrefix_123456789a: _SanitizingName[51:61],", + (string) (len=51) "\tMyPrefix__UnderscoreFirst: _SanitizingName[23:39],", + (string) (len=51) "\tMyPrefix_0NumberFirst: _SanitizingName[39:51],", + (string) (len=51) "\tMyPrefix_123456789A: _SanitizingName[51:61],", (string) (len=51) "\tMyPrefix_123123Asdf: _SanitizingName[61:72],", (string) (len=51) "\tMyPrefix_EndingHyphen: _SanitizingName[72:86],", (string) (len=1) "}", @@ -1028,12 +1028,12 @@ (string) (len=62) "\tstrings.ToLower(_SanitizingName[0:11]): MyPrefix_TestHyphen,", (string) (len=63) "\t_SanitizingName[11:23]: MyPrefix_HyphenStart,", (string) (len=63) "\tstrings.ToLower(_SanitizingName[11:23]): MyPrefix_HyphenStart,", - (string) (len=68) "\t_SanitizingName[23:39]: MyPrefix__underscoreFirst,", - (string) (len=68) "\tstrings.ToLower(_SanitizingName[23:39]): MyPrefix__underscoreFirst,", - (string) (len=64) "\t_SanitizingName[39:51]: MyPrefix_0numberFirst,", - (string) (len=64) "\tstrings.ToLower(_SanitizingName[39:51]): MyPrefix_0numberFirst,", - (string) (len=62) "\t_SanitizingName[51:61]: MyPrefix_123456789a,", - (string) (len=62) "\tstrings.ToLower(_SanitizingName[51:61]): MyPrefix_123456789a,", + (string) (len=68) "\t_SanitizingName[23:39]: MyPrefix__UnderscoreFirst,", + (string) (len=68) "\tstrings.ToLower(_SanitizingName[23:39]): MyPrefix__UnderscoreFirst,", + (string) (len=64) "\t_SanitizingName[39:51]: MyPrefix_0NumberFirst,", + (string) (len=64) "\tstrings.ToLower(_SanitizingName[39:51]): MyPrefix_0NumberFirst,", + (string) (len=62) "\t_SanitizingName[51:61]: MyPrefix_123456789A,", + (string) (len=62) "\tstrings.ToLower(_SanitizingName[51:61]): MyPrefix_123456789A,", (string) (len=62) "\t_SanitizingName[61:72]: MyPrefix_123123Asdf,", (string) (len=62) "\tstrings.ToLower(_SanitizingName[61:72]): MyPrefix_123123Asdf,", (string) (len=64) "\t_SanitizingName[72:86]: MyPrefix_EndingHyphen,", diff --git a/generator/generator.go b/generator/generator.go index da70f761..b3463acd 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -15,6 +15,8 @@ import ( "github.com/Masterminds/sprig" "github.com/pkg/errors" + "golang.org/x/text/cases" + "golang.org/x/text/language" "golang.org/x/tools/imports" ) @@ -416,7 +418,7 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { } } rawName := strings.TrimSpace(value) - name := strings.Title(rawName) + name := cases.Title(language.Und, cases.NoLower).String(rawName) prefixedName := name if name != skipHolder { prefixedName = enum.Prefix + name @@ -490,8 +492,10 @@ func sanitizeValue(value string) string { func snakeToCamelCase(value string) string { parts := strings.Split(value, "_") + title := cases.Title(language.Und, cases.NoLower) + for i, part := range parts { - parts[i] = strings.Title(part) + parts[i] = title.String(part) } value = strings.Join(parts, "") diff --git a/generator/generator_1.18_test.go b/generator/generator_1.18_test.go index 9292b95f..8c8a649a 100644 --- a/generator/generator_1.18_test.go +++ b/generator/generator_1.18_test.go @@ -310,7 +310,7 @@ func Test118Aliasing(t *testing.T) { ` g := NewGenerator(). WithoutSnakeToCamel() - ParseAliases([]string{"CDEF:C"}) + _ = ParseAliases([]string{"CDEF:C"}) f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) assert.Nil(t, err, "Error parsing no struct input") diff --git a/generator/generator_test.go b/generator/generator_test.go index e37a321a..f82f1908 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -307,7 +307,7 @@ func TestAliasing(t *testing.T) { ` g := NewGenerator(). WithoutSnakeToCamel() - ParseAliases([]string{"CDEF:C"}) + _ = ParseAliases([]string{"CDEF:C"}) f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) assert.Nil(t, err, "Error parsing no struct input") diff --git a/go.mod b/go.mod index 5f9639f1..22d278ae 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/stretchr/testify v1.8.1 github.com/urfave/cli/v2 v2.23.0 + golang.org/x/text v0.4.0 golang.org/x/tools v0.2.0 ) diff --git a/go.sum b/go.sum index 03545310..1d7d506d 100644 --- a/go.sum +++ b/go.sum @@ -119,6 +119,8 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= diff --git a/main.go b/main.go index c1b8f745..b73cf680 100644 --- a/main.go +++ b/main.go @@ -2,7 +2,6 @@ package main import ( "fmt" - "io/ioutil" "log" "os" "path/filepath" @@ -245,7 +244,7 @@ func main() { } mode := int(0644) - err = ioutil.WriteFile(outFilePath, raw, os.FileMode(mode)) + err = os.WriteFile(outFilePath, raw, os.FileMode(mode)) if err != nil { return fmt.Errorf("failed writing to file %s: %s", color.Cyan(outFilePath), color.Red(err)) } From 9793817a5b65af692253b8bc6081fe69a4b6985f Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Wed, 21 Dec 2022 12:25:22 -0700 Subject: [PATCH 46/91] fix parsing with parens (#160) --- _example/go_enum_enum_test.go | 45 ++++++++++++++++ _example/go_enum_test.go | 10 ++++ generator/generator.go | 98 +++++++++++++++++++---------------- generator/generator_test.go | 23 ++++++++ go.mod | 14 ++--- go.sum | 50 ++++-------------- main.go | 3 ++ 7 files changed, 150 insertions(+), 93 deletions(-) create mode 100644 _example/go_enum_enum_test.go create mode 100644 _example/go_enum_test.go diff --git a/_example/go_enum_enum_test.go b/_example/go_enum_enum_test.go new file mode 100644 index 00000000..53d8e5ac --- /dev/null +++ b/_example/go_enum_enum_test.go @@ -0,0 +1,45 @@ +// Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example + +package example + +import ( + "errors" + "fmt" +) + +const ( + // TestOnlyEnumABCDX is a TestOnlyEnum of type ABCD (x). + TestOnlyEnumABCDX TestOnlyEnum = "ABCD (x)" + // TestOnlyEnumEFGHY is a TestOnlyEnum of type EFGH (y). + TestOnlyEnumEFGHY TestOnlyEnum = "EFGH (y)" +) + +var ErrInvalidTestOnlyEnum = errors.New("not a valid TestOnlyEnum") + +// String implements the Stringer interface. +func (x TestOnlyEnum) String() string { + return string(x) +} + +// String implements the Stringer interface. +func (x TestOnlyEnum) IsValid() bool { + _, err := ParseTestOnlyEnum(string(x)) + return err == nil +} + +var _TestOnlyEnumValue = map[string]TestOnlyEnum{ + "ABCD (x)": TestOnlyEnumABCDX, + "EFGH (y)": TestOnlyEnumEFGHY, +} + +// ParseTestOnlyEnum attempts to convert a string to a TestOnlyEnum. +func ParseTestOnlyEnum(name string) (TestOnlyEnum, error) { + if x, ok := _TestOnlyEnumValue[name]; ok { + return x, nil + } + return TestOnlyEnum(""), fmt.Errorf("%s is %w", name, ErrInvalidTestOnlyEnum) +} diff --git a/_example/go_enum_test.go b/_example/go_enum_test.go new file mode 100644 index 00000000..363f08db --- /dev/null +++ b/_example/go_enum_test.go @@ -0,0 +1,10 @@ +//go:generate ../bin/go-enum +package example + +/* +ENUM( + ABCD (x), + EFGH (y), +) +*/ +type TestOnlyEnum string diff --git a/generator/generator.go b/generator/generator.go index b3463acd..2aa23347 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -506,59 +506,73 @@ func snakeToCamelCase(value string) string { // that is easier to deal with for the remainder of parsing. It turns multi line declarations and makes a single // string declaration. func getEnumDeclFromComments(comments []*ast.Comment) string { - parts := []string{} - store := false - - lines := []string{} + const EnumPrefix = "ENUM(" + var ( + parts []string + lines []string + store bool + enumParamLevel int + filteredLines []string + ) for _, comment := range comments { lines = append(lines, breakCommentIntoLines(comment)...) } - enumParamLevel := 0 - // Go over all the lines in this comment block - for _, line := range lines { - if store { - paramLevel, trimmed := parseLinePart(line) - if trimmed != "" { - parts = append(parts, trimmed) - } - enumParamLevel += paramLevel - if enumParamLevel == 0 { - // End ENUM Declaration - if trimmed != "" { - end := strings.Index(trimmed, ")") - if end >= 0 { - parts[len(parts)-1] = trimmed[:end] + filteredLines = make([]string, 0, len(lines)) + for idx := range lines { + line := lines[idx] + // If we're not in the enum, and this line doesn't contain the + // start string, then move along + if !store && !strings.Contains(line, EnumPrefix) { + continue + } + if !store { + // We must have had the start value in here + store = true + enumParamLevel = 1 + start := strings.Index(line, EnumPrefix) + line = line[start+len(EnumPrefix):] + } + lineParamLevel := strings.Count(line, "(") + lineParamLevel = lineParamLevel - strings.Count(line, ")") + + if enumParamLevel+lineParamLevel < 1 { + // We've ended, either with more than we need, or with just enough. Now we need to find the end. + for lineIdx, ch := range line { + if ch == '(' { + enumParamLevel = enumParamLevel + 1 + continue + } + if ch == ')' { + enumParamLevel = enumParamLevel - 1 + if enumParamLevel == 0 { + // We've found the end of the ENUM() definition, + // Cut off the suffix and break out of the loop + line = line[:lineIdx] + store = false + break } } - break } } - if strings.Contains(line, `ENUM(`) { - enumParamLevel = 1 - startIndex := strings.Index(line, `ENUM(`) - if startIndex >= 0 { - line = line[startIndex+len(`ENUM(`):] - } - paramLevel, trimmed := parseLinePart(line) - if trimmed != "" { - parts = append(parts, trimmed) - } - enumParamLevel += paramLevel - // Start ENUM Declaration - if enumParamLevel > 0 { - // Store other lines - store = true - } - } + filteredLines = append(filteredLines, line) } if enumParamLevel > 0 { fmt.Println("ENUM Parse error, there is a dangling '(' in your comment.") return "" } + + // Go over all the lines in this comment block + for _, line := range filteredLines { + _, trimmed := parseLinePart(line) + if trimmed != "" { + parts = append(parts, trimmed) + } + } + joined := fmt.Sprintf("ENUM(%s)", strings.Join(parts, `,`)) return joined } @@ -599,15 +613,11 @@ func breakCommentIntoLines(comment *ast.Comment) []string { } // trimAllTheThings takes off all the cruft of a line that we don't need. +// These lines should be pre-filtered so that we don't have to worry about +// the `ENUM(` prefix and the `)` suffix... those should already be removed. func trimAllTheThings(thing string) string { preTrimmed := strings.TrimSuffix(strings.TrimSpace(thing), `,`) - end := strings.Index(preTrimmed, `)`) - - if end < 0 { - end = len(preTrimmed) - } - - return strings.TrimSpace(preTrimmed[:end]) + return strings.TrimSpace(preTrimmed) } // inspect will walk the ast and fill a map of names and their struct information diff --git a/generator/generator_test.go b/generator/generator_test.go index f82f1908..0bcf6eba 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -318,3 +318,26 @@ func TestAliasing(t *testing.T) { fmt.Println(string(output)) } } + +// TestParanthesesParsing +func TestParenthesesParsing(t *testing.T) { + input := `package test + // This is a pre-enum comment that needs (to be handled properly) + // ENUM( + // abc (x), + //). This is an extra string comment (With parentheses of it's own) + // And (another line) with Parentheses + type Animal string + ` + g := NewGenerator() + f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) + assert.Nil(t, err, "Error parsing no struct input") + + output, err := g.Generate(f) + assert.Nil(t, err, "Error generating formatted code") + assert.Contains(t, string(output), "// AnimalAbcX is a Animal of type abc (x).") + assert.NotContains(t, string(output), "// AnimalAnd") + if false { // Debugging statement + fmt.Println(string(output)) + } +} diff --git a/go.mod b/go.mod index 22d278ae..1992d718 100644 --- a/go.mod +++ b/go.mod @@ -10,13 +10,12 @@ require ( github.com/mattn/goveralls v0.0.11 github.com/pkg/errors v0.9.1 github.com/stretchr/testify v1.8.1 - github.com/urfave/cli/v2 v2.23.0 - golang.org/x/text v0.4.0 - golang.org/x/tools v0.2.0 + github.com/urfave/cli/v2 v2.23.7 + golang.org/x/text v0.5.0 + golang.org/x/tools v0.4.0 ) require ( - github.com/BurntSushi/toml v1.2.1 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect @@ -25,20 +24,17 @@ require ( github.com/huandu/xstrings v1.3.3 // indirect github.com/imdario/mergo v0.3.13 // indirect github.com/kr/pretty v0.3.1 // indirect - github.com/kr/text v0.2.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.16 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/rogpeppe/go-internal v1.9.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/objx v0.5.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect golang.org/x/crypto v0.1.0 // indirect - golang.org/x/mod v0.6.0 // indirect - golang.org/x/sys v0.1.0 // indirect + golang.org/x/mod v0.7.0 // indirect + golang.org/x/sys v0.3.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 1d7d506d..1254333f 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,3 @@ -github.com/BurntSushi/toml v1.1.0 h1:ksErzDEI1khOiGPgpwuI7x2ebx/uXQNw7xJpn9Eq1+I= -github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= -github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= @@ -20,32 +16,22 @@ github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= -github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4= github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o= -github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= github.com/labstack/gommon v0.4.0 h1:y7cvthEAEbU0yHOf4axH8ZG2NH8knB9iNSoTO8dyIk8= github.com/labstack/gommon v0.4.0/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -60,8 +46,6 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= @@ -70,18 +54,14 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/urfave/cli/v2 v2.16.3 h1:gHoFIwpPjoyIMbJp/VFd+/vuD0dAgFK4B6DpEMFJfQk= -github.com/urfave/cli/v2 v2.16.3/go.mod h1:1CNUng3PtjQMtRzJO4FMXBQvkGtuYRxxiR9xMa7jMwI= -github.com/urfave/cli/v2 v2.23.0 h1:pkly7gKIeYv3olPAeNajNpLjeJrmTPYCoZWaV+2VfvE= -github.com/urfave/cli/v2 v2.23.0/go.mod h1:1CNUng3PtjQMtRzJO4FMXBQvkGtuYRxxiR9xMa7jMwI= +github.com/urfave/cli/v2 v2.23.7 h1:YHDQ46s3VghFHFf1DdF+Sh7H4RqhcM+t0TmZRJx4oJY= +github.com/urfave/cli/v2 v2.23.7/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= @@ -89,15 +69,11 @@ github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsr github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e h1:T8NU3HyQ8ClP4SEE+KbFlg6n0NhuTsN4MyznaarGsZM= -golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I= -golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= @@ -111,31 +87,25 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE= -golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4= +golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/main.go b/main.go index b73cf680..99c90ecb 100644 --- a/main.go +++ b/main.go @@ -230,6 +230,9 @@ func main() { out("go-enum started. file: %s\n", color.Cyan(originalName)) fileName, _ = filepath.Abs(fileName) outFilePath := fmt.Sprintf("%s_enum.go", strings.TrimSuffix(fileName, filepath.Ext(fileName))) + if strings.HasSuffix(fileName, "_test.go") { + outFilePath = strings.Replace(outFilePath, "_test_enum.go", "_enum_test.go", 1) + } // Parse the file given in arguments raw, err := g.GenerateFromFile(fileName) From faa9adf2eddedadfbb24946b135afdd86f1d36a0 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Tue, 27 Dec 2022 15:05:55 -0700 Subject: [PATCH 47/91] add github actions dependabot --- .github/dependabot.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 36b24f29..07ab2815 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,4 +3,8 @@ updates: - package-ecosystem: gomod directory: / schedule: - interval: daily + interval: weekly + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: weekly From a4720f3ff67c52717c7b0c842fa3c2beda54611d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Dec 2022 15:46:26 -0700 Subject: [PATCH 48/91] Bump actions/cache from 1 to 3 (#161) Bumps [actions/cache](https://github.com/actions/cache) from 1 to 3. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v1...v3) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 46a7bdf1..9b443f37 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,7 @@ jobs: go-version: 1.19 - name: Cache Go modules - uses: actions/cache@v1 + uses: actions/cache@v3 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} From 5354791d5e22eacc4ee82f2e11038d5a980eb1a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Dec 2022 16:00:51 -0700 Subject: [PATCH 49/91] Bump goreleaser/goreleaser-action from 3 to 4 (#162) Bumps [goreleaser/goreleaser-action](https://github.com/goreleaser/goreleaser-action) from 3 to 4. - [Release notes](https://github.com/goreleaser/goreleaser-action/releases) - [Commits](https://github.com/goreleaser/goreleaser-action/compare/v3...v4) --- updated-dependencies: - dependency-name: goreleaser/goreleaser-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9b443f37..2f07d83a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,14 +28,14 @@ jobs: ${{ runner.os }}-go- - name: Install GoReleaser - uses: goreleaser/goreleaser-action@v3 + uses: goreleaser/goreleaser-action@v4 with: install-only: true - name: Show GoReleaser version run: goreleaser -v - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v3 + uses: goreleaser/goreleaser-action@v4 if: success() && startsWith(github.ref, 'refs/tags/') with: # either 'goreleaser' (default) or 'goreleaser-pro' From 1e5efaa27b5553b0e2f4235a99407ceba9be1035 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Sat, 28 Jan 2023 16:57:35 -0700 Subject: [PATCH 50/91] Add Values() (#167) * add values template * add no comments flag --- _example/example.go | 5 ++--- _example/example_enum.go | 29 +++++++++++++++++++++++++++++ _example/sql.go | 2 +- _example/sql_enum.go | 4 ---- _example/strings_only.go | 2 +- _example/strings_only_enum.go | 20 +++++++++++++------- generator/enum.tmpl | 15 ++++++++++++++- generator/enum_string.tmpl | 16 +++++++++++++++- generator/generator.go | 23 +++++++++++++++++------ go.mod | 8 ++++---- go.sum | 16 ++++++++-------- main.go | 20 +++++++++++++++++++- 12 files changed, 123 insertions(+), 37 deletions(-) diff --git a/_example/example.go b/_example/example.go index 971072a7..094bf98a 100644 --- a/_example/example.go +++ b/_example/example.go @@ -1,10 +1,9 @@ -//go:generate ../bin/go-enum --marshal --nocase --flag --names +//go:generate ../bin/go-enum --marshal --nocase --flag --names --values package example // X is doc'ed -type X struct { -} +type X struct{} // Make x ENUM(Toyota,_,Chevy,_,Ford,_,Tesla,_,Hyundai,_,Nissan,_,Jaguar,_,Audi,_,BMW,_,Mercedes-Benz,_,Volkswagon) type Make int32 diff --git a/_example/example_enum.go b/_example/example_enum.go index 3e43b02b..88600921 100644 --- a/_example/example_enum.go +++ b/_example/example_enum.go @@ -81,6 +81,23 @@ func MakeNames() []string { return tmp } +// MakeValues returns a list of the values for Make +func MakeValues() []Make { + return []Make{ + MakeToyota, + MakeChevy, + MakeFord, + MakeTesla, + MakeHyundai, + MakeNissan, + MakeJaguar, + MakeAudi, + MakeBMW, + MakeMercedesBenz, + MakeVolkswagon, + } +} + var _MakeMap = map[Make]string{ MakeToyota: _MakeName[0:6], MakeChevy: _MakeName[6:11], @@ -208,6 +225,18 @@ func NoZerosNames() []string { return tmp } +// NoZerosValues returns a list of the values for NoZeros +func NoZerosValues() []NoZeros { + return []NoZeros{ + NoZerosStart, + NoZerosMiddle, + NoZerosEnd, + NoZerosPs, + NoZerosPps, + NoZerosPpps, + } +} + var _NoZerosMap = map[NoZeros]string{ NoZerosStart: _NoZerosName[0:5], NoZerosMiddle: _NoZerosName[5:11], diff --git a/_example/sql.go b/_example/sql.go index fcb5bca7..3436a79c 100644 --- a/_example/sql.go +++ b/_example/sql.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum --sql --sqlnullstr --sqlnullint --ptr --marshal +//go:generate ../bin/go-enum --sql --sqlnullstr --sqlnullint --ptr --marshal --nocomments package example diff --git a/_example/sql_enum.go b/_example/sql_enum.go index 51f3a802..46142ac8 100644 --- a/_example/sql_enum.go +++ b/_example/sql_enum.go @@ -15,13 +15,9 @@ import ( ) const ( - // ProjectStatusPending is a ProjectStatus of type Pending. ProjectStatusPending ProjectStatus = iota - // ProjectStatusInWork is a ProjectStatus of type InWork. ProjectStatusInWork - // ProjectStatusCompleted is a ProjectStatus of type Completed. ProjectStatusCompleted - // ProjectStatusRejected is a ProjectStatus of type Rejected. ProjectStatusRejected ) diff --git a/_example/strings_only.go b/_example/strings_only.go index c1e49b94..a1472c2d 100644 --- a/_example/strings_only.go +++ b/_example/strings_only.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum --ptr --marshal --flag --nocase --mustparse --sqlnullstr --sql --names +//go:generate ../bin/go-enum --ptr --marshal --flag --nocase --mustparse --sqlnullstr --sql --names --values --nocomments package example diff --git a/_example/strings_only_enum.go b/_example/strings_only_enum.go index 60ce0837..f181ee77 100644 --- a/_example/strings_only_enum.go +++ b/_example/strings_only_enum.go @@ -15,14 +15,10 @@ import ( ) const ( - // StrStatePending is a StrState of type pending. - StrStatePending StrState = "pending" - // StrStateRunning is a StrState of type running. - StrStateRunning StrState = "running" - // StrStateCompleted is a StrState of type completed. + StrStatePending StrState = "pending" + StrStateRunning StrState = "running" StrStateCompleted StrState = "completed" - // StrStateFailed is a StrState of type failed. - StrStateFailed StrState = "failed" + StrStateFailed StrState = "failed" ) var ErrInvalidStrState = fmt.Errorf("not a valid StrState, try [%s]", strings.Join(_StrStateNames, ", ")) @@ -41,6 +37,16 @@ func StrStateNames() []string { return tmp } +// StrStateValues returns a list of the values for StrState +func StrStateValues() []StrState { + return []StrState{ + StrStatePending, + StrStateRunning, + StrStateCompleted, + StrStateFailed, + } +} + // String implements the Stringer interface. func (x StrState) String() string { return string(x) diff --git a/generator/enum.tmpl b/generator/enum.tmpl index 3759c5ac..45ef698b 100644 --- a/generator/enum.tmpl +++ b/generator/enum.tmpl @@ -16,10 +16,12 @@ import ( const ( {{- $enumName := .enum.Name -}} {{- $enumType := .enum.Type -}} +{{- $noComments := .nocomments -}} {{- $vars := dict "lastoffset" "0" -}} {{ range $rIndex, $value := .enum.Values }} {{- $lastOffset := pluck "lastoffset" $vars | first }}{{ $offset := offset $rIndex $enumType $value }} - {{ if eq $value.Name "_"}}// Skipped value.{{else}}// {{$value.PrefixedName}} is a {{$enumName}} of type {{$value.Name}}.{{end}} + {{- if $noComments }}{{else}} + {{ if eq $value.Name "_"}}// Skipped value.{{else}}// {{$value.PrefixedName}} is a {{$enumName}} of type {{$value.Name}}.{{end}}{{end}} {{- if $value.Comment}} // {{$value.Comment}} {{- end}} @@ -340,4 +342,15 @@ func {{.enum.Name}}Names() []string { } {{ end -}} +{{ if .values }} + +// {{.enum.Name}}Values returns a list of the values for {{.enum.Name}} +func {{.enum.Name}}Values() []{{.enum.Name}} { + return []{{.enum.Name}}{ {{ range $rIndex, $value := .enum.Values }}{{ if ne $value.Name "_"}} + {{$value.PrefixedName}},{{ end }} +{{- end}} + } +} +{{ end -}} + {{end}} diff --git a/generator/enum_string.tmpl b/generator/enum_string.tmpl index f71f02c9..3c7e65d2 100644 --- a/generator/enum_string.tmpl +++ b/generator/enum_string.tmpl @@ -2,9 +2,11 @@ const ( {{- $enumName := .enum.Name -}} {{- $enumType := .enum.Type -}} +{{- $noComments := .nocomments -}} {{- $vars := dict "lastoffset" "0" -}} {{ range $rIndex, $value := .enum.Values }} - {{ if eq $value.Name "_"}}// Skipped value.{{else}}// {{$value.PrefixedName}} is a {{$enumName}} of type {{$value.RawName}}.{{end}} + {{- if $noComments }}{{else}} + {{ if eq $value.Name "_"}}// Skipped value.{{else}}// {{$value.PrefixedName}} is a {{$enumName}} of type {{$value.RawName}}.{{end}}{{end}} {{- if $value.Comment}} // {{$value.Comment}} {{- end}} @@ -27,6 +29,18 @@ func {{.enum.Name}}Names() []string { } {{ end -}} + +{{ if .values }} + +// {{.enum.Name}}Values returns a list of the values for {{.enum.Name}} +func {{.enum.Name}}Values() []{{.enum.Name}} { + return []{{.enum.Name}}{ {{ range $rIndex, $value := .enum.Values }}{{ if ne $value.Name "_"}} + {{$value.PrefixedName}},{{ end }} +{{- end}} + } +} +{{ end -}} + // String implements the Stringer interface. func (x {{.enum.Name}}) String() string { return string(x) diff --git a/generator/generator.go b/generator/generator.go index 2aa23347..7845fcdf 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -25,9 +25,7 @@ const ( parseCommentPrefix = `//` ) -var ( - replacementNames = map[string]string{} -) +var replacementNames = map[string]string{} // Generator is responsible for generating validation files for the given in a go source file. type Generator struct { @@ -47,6 +45,7 @@ type Generator struct { sqlint bool flag bool names bool + values bool leaveSnakeCase bool prefix string sqlNullInt bool @@ -54,6 +53,7 @@ type Generator struct { ptr bool mustParse bool forceLower bool + noComments bool } // Enum holds data for a discovered enum in the parsed source @@ -154,6 +154,12 @@ func (g *Generator) WithNames() *Generator { return g } +// WithValues is used to add Values methods to the enum +func (g *Generator) WithValues() *Generator { + g.values = true + return g +} + // WithoutSnakeToCamel is used to add flag methods to the enum func (g *Generator) WithoutSnakeToCamel() *Generator { g.leaveSnakeCase = true @@ -196,6 +202,12 @@ func (g *Generator) WithForceLower() *Generator { return g } +// WithNoComments is used to remove auto generated comments from the enum. +func (g *Generator) WithNoComments() *Generator { + g.noComments = true + return g +} + // ParseAliases is used to add aliases to replace during name sanitization. func ParseAliases(aliases []string) error { aliasMap := map[string]string{} @@ -238,7 +250,6 @@ func (g *Generator) GenerateFromFile(inputFile string) ([]byte, error) { return nil, fmt.Errorf("generate: error parsing input file '%s': %s", inputFile, err) } return g.Generate(f) - } // Generate does the heavy lifting for the code generation starting from the parsed AST file. @@ -285,11 +296,13 @@ func (g *Generator) Generate(f *ast.File) ([]byte, error) { "name": name, "lowercase": g.lowercaseLookup, "nocase": g.caseInsensitive, + "nocomments": g.noComments, "marshal": g.marshal, "sql": g.sql, "sqlint": g.sqlint, "flag": g.flag, "names": g.names, + "values": g.values, "ptr": g.ptr, "sqlnullint": g.sqlNullInt, "sqlnullstr": g.sqlNullStr, @@ -343,7 +356,6 @@ func (g *Generator) parseFile(fileName string) (*ast.File, error) { // parseEnum looks for the ENUM(x,y,z) formatted documentation from the type definition func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { - if ts.Doc == nil { return nil, errors.New("No Doc on Enum") } @@ -674,7 +686,6 @@ func copyGenDeclCommentsToSpecs(x *ast.GenDecl) { } } } - } // isTypeSpecEnum checks the comments on the type spec to determine if there is an enum diff --git a/go.mod b/go.mod index 1992d718..9822ad22 100644 --- a/go.mod +++ b/go.mod @@ -10,9 +10,9 @@ require ( github.com/mattn/goveralls v0.0.11 github.com/pkg/errors v0.9.1 github.com/stretchr/testify v1.8.1 - github.com/urfave/cli/v2 v2.23.7 - golang.org/x/text v0.5.0 - golang.org/x/tools v0.4.0 + github.com/urfave/cli/v2 v2.24.1 + golang.org/x/text v0.6.0 + golang.org/x/tools v0.5.0 ) require ( @@ -34,7 +34,7 @@ require ( github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect golang.org/x/crypto v0.1.0 // indirect golang.org/x/mod v0.7.0 // indirect - golang.org/x/sys v0.3.0 // indirect + golang.org/x/sys v0.4.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 1254333f..8980077c 100644 --- a/go.sum +++ b/go.sum @@ -60,8 +60,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/urfave/cli/v2 v2.23.7 h1:YHDQ46s3VghFHFf1DdF+Sh7H4RqhcM+t0TmZRJx4oJY= -github.com/urfave/cli/v2 v2.23.7/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/urfave/cli/v2 v2.24.1 h1:/QYYr7g0EhwXEML8jO+8OYt5trPnLHS0p3mrgExJ5NU= +github.com/urfave/cli/v2 v2.24.1/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= @@ -88,18 +88,18 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= -golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4= -golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= +golang.org/x/tools v0.5.0 h1:+bSpV5HIeWkuvgaMfI3UmKRThoTA5ODJTUd8T17NO+4= +golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/main.go b/main.go index 99c90ecb..e209a13c 100644 --- a/main.go +++ b/main.go @@ -30,6 +30,7 @@ type rootT struct { Flag bool Prefix string Names bool + Values bool LeaveSnakeCase bool SQLNullStr bool SQLNullInt bool @@ -38,6 +39,7 @@ type rootT struct { Aliases cli.StringSlice MustParse bool ForceLower bool + NoComments bool } func main() { @@ -107,6 +109,11 @@ func main() { Usage: "Generates a 'Names() []string' function, and adds the possible enum values in the error response during parsing", Destination: &argv.Names, }, + &cli.BoolFlag{ + Name: "values", + Usage: "Generates a 'Values() []{{ENUM}}' function.", + Destination: &argv.Values, + }, &cli.BoolFlag{ Name: "nocamel", Usage: "Removes the snake_case to CamelCase name changing", @@ -149,6 +156,11 @@ func main() { Usage: "Forces a camel cased comment to generate lowercased names.", Destination: &argv.ForceLower, }, + &cli.BoolFlag{ + Name: "nocomments", + Usage: "Removes auto generated comments. If you add your own comments, these will still be created.", + Destination: &argv.NoComments, + }, }, Action: func(ctx *cli.Context) error { if err := generator.ParseAliases(argv.Aliases.Value()); err != nil { @@ -186,6 +198,9 @@ func main() { if argv.Names { g.WithNames() } + if argv.Values { + g.WithValues() + } if argv.LeaveSnakeCase { g.WithoutSnakeToCamel() } @@ -207,6 +222,9 @@ func main() { if argv.ForceLower { g.WithForceLower() } + if argv.NoComments { + g.WithNoComments() + } if templates := []string(argv.TemplateFileNames.Value()); len(templates) > 0 { for _, t := range templates { if fn, err := globFilenames(t); err != nil { @@ -246,7 +264,7 @@ func main() { continue } - mode := int(0644) + mode := int(0o644) err = os.WriteFile(outFilePath, raw, os.FileMode(mode)) if err != nil { return fmt.Errorf("failed writing to file %s: %s", color.Cyan(outFilePath), color.Red(err)) From b9e7d1ac24b2b7f6a5b451fa3d21706ffd8d79e2 Mon Sep 17 00:00:00 2001 From: ThinkChaos Date: Sun, 29 Jan 2023 20:47:41 -0500 Subject: [PATCH 51/91] feat: add support for specifying string enum values (#165) * feat: add support for specifying string enum values * add Quote handling --- _example/sql_str_int.go | 3 + _example/sql_str_int_enum.go | 195 ++++++++++++++++++++++++++++++++++ _example/strings_only.go | 2 +- _example/strings_only_enum.go | 4 +- _example/strings_only_test.go | 8 +- generator/enum_string.tmpl | 18 ++-- generator/generator.go | 79 ++++++++++---- generator/generator_test.go | 25 +++++ generator/template_funcs.go | 10 +- 9 files changed, 300 insertions(+), 44 deletions(-) diff --git a/_example/sql_str_int.go b/_example/sql_str_int.go index e7753b9f..70a2bae6 100644 --- a/_example/sql_str_int.go +++ b/_example/sql_str_int.go @@ -4,3 +4,6 @@ package example // ENUM(_,zeus, apollo, athena=20, ares) type GreekGod string + +// ENUM(_,zeus, apollo, _=19, athena="20", ares) +type GreekGodCustom string diff --git a/_example/sql_str_int_enum.go b/_example/sql_str_int_enum.go index 627d0629..43ee7732 100644 --- a/_example/sql_str_int_enum.go +++ b/_example/sql_str_int_enum.go @@ -206,3 +206,198 @@ func (x NullGreekGod) Value() (driver.Value, error) { // driver.Value accepts int64 for int values. return string(x.GreekGod), nil } + +const ( + // Skipped value. + _ GreekGodCustom = "_" + // GreekGodCustomZeus is a GreekGodCustom of type zeus. + GreekGodCustomZeus GreekGodCustom = "zeus" + // GreekGodCustomApollo is a GreekGodCustom of type apollo. + GreekGodCustomApollo GreekGodCustom = "apollo" + // Skipped value. + _ GreekGodCustom = "_" + // GreekGodCustomAthena is a GreekGodCustom of type athena. + GreekGodCustomAthena GreekGodCustom = "20" + // GreekGodCustomAres is a GreekGodCustom of type ares. + GreekGodCustomAres GreekGodCustom = "ares" +) + +var ErrInvalidGreekGodCustom = fmt.Errorf("not a valid GreekGodCustom, try [%s]", strings.Join(_GreekGodCustomNames, ", ")) + +var _GreekGodCustomNames = []string{ + string(GreekGodCustomZeus), + string(GreekGodCustomApollo), + string(GreekGodCustomAthena), + string(GreekGodCustomAres), +} + +// GreekGodCustomNames returns a list of possible string values of GreekGodCustom. +func GreekGodCustomNames() []string { + tmp := make([]string, len(_GreekGodCustomNames)) + copy(tmp, _GreekGodCustomNames) + return tmp +} + +// String implements the Stringer interface. +func (x GreekGodCustom) String() string { + return string(x) +} + +// String implements the Stringer interface. +func (x GreekGodCustom) IsValid() bool { + _, err := ParseGreekGodCustom(string(x)) + return err == nil +} + +var _GreekGodCustomValue = map[string]GreekGodCustom{ + "zeus": GreekGodCustomZeus, + "apollo": GreekGodCustomApollo, + "20": GreekGodCustomAthena, + "ares": GreekGodCustomAres, +} + +// ParseGreekGodCustom attempts to convert a string to a GreekGodCustom. +func ParseGreekGodCustom(name string) (GreekGodCustom, error) { + if x, ok := _GreekGodCustomValue[name]; ok { + return x, nil + } + return GreekGodCustom(""), fmt.Errorf("%s is %w", name, ErrInvalidGreekGodCustom) +} + +var errGreekGodCustomNilPtr = errors.New("value pointer is nil") // one per type for package clashes + +var sqlIntGreekGodCustomMap = map[int64]GreekGodCustom{ + 1: GreekGodCustomZeus, + 2: GreekGodCustomApollo, + 20: GreekGodCustomAthena, + 21: GreekGodCustomAres, +} + +var sqlIntGreekGodCustomValue = map[GreekGodCustom]int64{ + GreekGodCustomZeus: 1, + GreekGodCustomApollo: 2, + GreekGodCustomAthena: 20, + GreekGodCustomAres: 21, +} + +func lookupSqlIntGreekGodCustom(val int64) (GreekGodCustom, error) { + x, ok := sqlIntGreekGodCustomMap[val] + if !ok { + return x, fmt.Errorf("%v is not %w", val, ErrInvalidGreekGodCustom) + } + return x, nil +} + +// Scan implements the Scanner interface. +func (x *GreekGodCustom) Scan(value interface{}) (err error) { + if value == nil { + *x = GreekGodCustom("") + return + } + + // A wider range of scannable types. + // driver.Value values at the top of the list for expediency + switch v := value.(type) { + case int64: + *x, err = lookupSqlIntGreekGodCustom(v) + case string: + *x, err = ParseGreekGodCustom(v) + case []byte: + if val, verr := strconv.ParseInt(string(v), 10, 64); verr == nil { + *x, err = lookupSqlIntGreekGodCustom(val) + } else { + // try parsing the value as a string + *x, err = ParseGreekGodCustom(string(v)) + } + case GreekGodCustom: + *x = v + case int: + *x, err = lookupSqlIntGreekGodCustom(int64(v)) + case *GreekGodCustom: + if v == nil { + return errGreekGodCustomNilPtr + } + *x = *v + case uint: + *x, err = lookupSqlIntGreekGodCustom(int64(v)) + case uint64: + *x, err = lookupSqlIntGreekGodCustom(int64(v)) + case *int: + if v == nil { + return errGreekGodCustomNilPtr + } + *x, err = lookupSqlIntGreekGodCustom(int64(*v)) + case *int64: + if v == nil { + return errGreekGodCustomNilPtr + } + *x, err = lookupSqlIntGreekGodCustom(int64(*v)) + case float64: // json marshals everything as a float64 if it's a number + *x, err = lookupSqlIntGreekGodCustom(int64(v)) + case *float64: // json marshals everything as a float64 if it's a number + if v == nil { + return errGreekGodCustomNilPtr + } + *x, err = lookupSqlIntGreekGodCustom(int64(*v)) + case *uint: + if v == nil { + return errGreekGodCustomNilPtr + } + *x, err = lookupSqlIntGreekGodCustom(int64(*v)) + case *uint64: + if v == nil { + return errGreekGodCustomNilPtr + } + *x, err = lookupSqlIntGreekGodCustom(int64(*v)) + case *string: + if v == nil { + return errGreekGodCustomNilPtr + } + *x, err = ParseGreekGodCustom(*v) + default: + return errors.New("invalid type for GreekGodCustom") + } + + return +} + +// Value implements the driver Valuer interface. +func (x GreekGodCustom) Value() (driver.Value, error) { + val, ok := sqlIntGreekGodCustomValue[x] + if !ok { + return nil, ErrInvalidGreekGodCustom + } + return int64(val), nil +} + +type NullGreekGodCustom struct { + GreekGodCustom GreekGodCustom + Valid bool +} + +func NewNullGreekGodCustom(val interface{}) (x NullGreekGodCustom) { + err := x.Scan(val) // yes, we ignore this error, it will just be an invalid value. + _ = err // make any errcheck linters happy + return +} + +// Scan implements the Scanner interface. +func (x *NullGreekGodCustom) Scan(value interface{}) (err error) { + if value == nil { + x.GreekGodCustom, x.Valid = GreekGodCustom(""), false + return + } + + err = x.GreekGodCustom.Scan(value) + x.Valid = (err == nil) + return +} + +// Value implements the driver Valuer interface. +func (x NullGreekGodCustom) Value() (driver.Value, error) { + if !x.Valid { + return nil, nil + } + // driver.Value accepts int64 for int values. + return string(x.GreekGodCustom), nil +} diff --git a/_example/strings_only.go b/_example/strings_only.go index a1472c2d..e296a71c 100644 --- a/_example/strings_only.go +++ b/_example/strings_only.go @@ -2,5 +2,5 @@ package example -// ENUM(pending, running, completed, failed) +// ENUM(pending, running, completed, failed=error) type StrState string diff --git a/_example/strings_only_enum.go b/_example/strings_only_enum.go index f181ee77..2cf89841 100644 --- a/_example/strings_only_enum.go +++ b/_example/strings_only_enum.go @@ -18,7 +18,7 @@ const ( StrStatePending StrState = "pending" StrStateRunning StrState = "running" StrStateCompleted StrState = "completed" - StrStateFailed StrState = "failed" + StrStateFailed StrState = "error" ) var ErrInvalidStrState = fmt.Errorf("not a valid StrState, try [%s]", strings.Join(_StrStateNames, ", ")) @@ -62,7 +62,7 @@ var _StrStateValue = map[string]StrState{ "pending": StrStatePending, "running": StrStateRunning, "completed": StrStateCompleted, - "failed": StrStateFailed, + "error": StrStateFailed, } // ParseStrState attempts to convert a string to a StrState. diff --git a/_example/strings_only_test.go b/_example/strings_only_test.go index 2155b6ca..bdc0b341 100644 --- a/_example/strings_only_test.go +++ b/_example/strings_only_test.go @@ -20,7 +20,7 @@ func TestStrState(t *testing.T) { func TestStrStateMustParse(t *testing.T) { x := `avocado` - assert.PanicsWithError(t, x+" is not a valid StrState, try [pending, running, completed, failed]", func() { MustParseStrState(x) }) + assert.PanicsWithError(t, x+" is not a valid StrState, try [pending, running, completed, error]", func() { MustParseStrState(x) }) assert.NotPanics(t, func() { MustParseStrState(StrStateFailed.String()) }) } @@ -78,14 +78,14 @@ func TestStrStateUnmarshal(t *testing.T) { }, { name: "failed", - input: `{"state":"Failed"}`, + input: `{"state":"Error"}`, output: &testData{StrStateX: StrStateFailed}, errorExpected: false, err: nil, }, { name: "failedlower", - input: `{"state":"failed"}`, + input: `{"state":"error"}`, output: &testData{StrStateX: StrStateFailed}, errorExpected: false, err: nil, @@ -141,7 +141,7 @@ func TestStrStateMarshal(t *testing.T) { }, { name: "green", - output: `{"state":"failed"}`, + output: `{"state":"error"}`, input: &testData{StrStateX: StrStateFailed}, errorExpected: false, err: nil, diff --git a/generator/enum_string.tmpl b/generator/enum_string.tmpl index 3c7e65d2..299fc0e8 100644 --- a/generator/enum_string.tmpl +++ b/generator/enum_string.tmpl @@ -10,7 +10,7 @@ const ( {{- if $value.Comment}} // {{$value.Comment}} {{- end}} - {{$value.PrefixedName}} {{$enumName}} = "{{$value.RawName}}" + {{$value.PrefixedName}} {{$enumName}} = "{{$value.ValueStr}}" {{- end}} ) {{if .names -}} @@ -100,7 +100,7 @@ func (x *{{.enum.Name}}) UnmarshalText(text []byte) error { } {{end}} -{{ if or .sql .sqlnullstr .sqlint .sqlnullint }} +{{ if .anySQLEnabled }} var err{{.enum.Name}}NilPtr = errors.New("value pointer is nil") // one per type for package clashes {{ end }} @@ -136,8 +136,8 @@ func (x *{{.enum.Name}}) Scan(value interface{}) (err error) { default: return errors.New("invalid type for {{.enum.Name}}") } - - return + + return } // Value implements the driver Valuer interface. @@ -149,12 +149,12 @@ func (x {{.enum.Name}}) Value() (driver.Value, error) { {{/* SQL stored as an integer value */}} {{ if or .sqlint .sqlnullint }} var sqlInt{{.enum.Name}}Map = map[int64]{{.enum.Name}}{ {{ range $rIndex, $value := .enum.Values }}{{ if ne $value.Name "_"}} -{{ $value.Value }}: {{ $value.PrefixedName }},{{end}} +{{ $value.ValueInt }}: {{ $value.PrefixedName }},{{end}} {{- end}} } var sqlInt{{.enum.Name}}Value = map[{{.enum.Name}}]int64{ {{ range $rIndex, $value := .enum.Values }}{{ if ne $value.Name "_"}} - {{ $value.PrefixedName }}: {{ $value.Value }},{{end}} + {{ $value.PrefixedName }}: {{ $value.ValueInt }},{{end}} {{- end}} } @@ -170,7 +170,7 @@ func lookupSqlInt{{.enum.Name}}(val int64) ({{.enum.Name}}, error){ func (x *{{.enum.Name}}) Scan(value interface{}) (err error) { if value == nil { *x = {{.enum.Name}}("") - return + return } // A wider range of scannable types. @@ -235,8 +235,8 @@ func (x *{{.enum.Name}}) Scan(value interface{}) (err error) { default: return errors.New("invalid type for {{.enum.Name}}") } - - return + + return } // Value implements the driver Valuer interface. diff --git a/generator/generator.go b/generator/generator.go index 7845fcdf..975d1e0d 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -69,7 +69,8 @@ type EnumValue struct { RawName string Name string PrefixedName string - Value interface{} + ValueStr string + ValueInt interface{} Comment string } @@ -208,6 +209,10 @@ func (g *Generator) WithNoComments() *Generator { return g } +func (g *Generator) anySQLEnabled() bool { + return g.sql || g.sqlNullStr || g.sqlint || g.sqlNullInt +} + // ParseAliases is used to add aliases to replace during name sanitization. func ParseAliases(aliases []string) error { aliasMap := map[string]string{} @@ -292,22 +297,23 @@ func (g *Generator) Generate(f *ast.File) ([]byte, error) { created++ data := map[string]interface{}{ - "enum": enum, - "name": name, - "lowercase": g.lowercaseLookup, - "nocase": g.caseInsensitive, - "nocomments": g.noComments, - "marshal": g.marshal, - "sql": g.sql, - "sqlint": g.sqlint, - "flag": g.flag, - "names": g.names, - "values": g.values, - "ptr": g.ptr, - "sqlnullint": g.sqlNullInt, - "sqlnullstr": g.sqlNullStr, - "mustparse": g.mustParse, - "forcelower": g.forceLower, + "enum": enum, + "name": name, + "lowercase": g.lowercaseLookup, + "nocase": g.caseInsensitive, + "nocomments": g.noComments, + "marshal": g.marshal, + "sql": g.sql, + "sqlint": g.sqlint, + "flag": g.flag, + "names": g.names, + "ptr": g.ptr, + "values": g.values, + "anySQLEnabled": g.anySQLEnabled(), + "sqlnullint": g.sqlNullInt, + "sqlnullstr": g.sqlNullStr, + "mustparse": g.mustParse, + "forcelower": g.forceLower, } templateName := "enum" @@ -401,12 +407,25 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { // Make sure to leave out any empty parts if value != "" { + rawName := value + valueStr := value + if strings.Contains(value, `=`) { // Get the value specified and set the data to that value. equalIndex := strings.Index(value, `=`) dataVal := strings.TrimSpace(value[equalIndex+1:]) if dataVal != "" { - if unsigned { + valueStr = dataVal + rawName = value[:equalIndex] + if enum.Type == "string" { + if parsed, err := strconv.ParseInt(dataVal, 10, 64); err == nil { + data = parsed + valueStr = rawName + } + if isQuoted(dataVal) { + valueStr = trimQuotes(dataVal) + } + } else if unsigned { newData, err := strconv.ParseUint(dataVal, 10, 64) if err != nil { err = errors.Wrapf(err, "failed parsing the data part of enum value '%s'", value) @@ -423,13 +442,13 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { } data = newData } - value = value[:equalIndex] } else { - value = strings.TrimSuffix(value, `=`) - fmt.Printf("Ignoring enum with '=' but no value after: %s\n", value) + rawName = strings.TrimSuffix(rawName, `=`) + fmt.Printf("Ignoring enum with '=' but no value after: %s\n", rawName) } } - rawName := strings.TrimSpace(value) + rawName = strings.TrimSpace(rawName) + valueStr = strings.TrimSpace(valueStr) name := cases.Title(language.Und, cases.NoLower).String(rawName) prefixedName := name if name != skipHolder { @@ -440,7 +459,7 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { } } - ev := EnumValue{Name: name, RawName: rawName, PrefixedName: prefixedName, Value: data, Comment: comment} + ev := EnumValue{Name: name, RawName: rawName, PrefixedName: prefixedName, ValueStr: valueStr, ValueInt: data, Comment: comment} enum.Values = append(enum.Values, ev) data = increment(data) } @@ -451,6 +470,20 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { return enum, nil } +func isQuoted(s string) bool { + s = strings.TrimSpace(s) + return (strings.HasPrefix(s, `"`) && strings.HasSuffix(s, `"`)) || (strings.HasPrefix(s, `'`) && strings.HasSuffix(s, `'`)) +} + +func trimQuotes(s string) string { + s = strings.TrimSpace(s) + for _, quote := range []string{`"`, `'`} { + s = strings.TrimPrefix(s, quote) + s = strings.TrimSuffix(s, quote) + } + return s +} + func increment(d interface{}) interface{} { switch v := d.(type) { case uint64: diff --git a/generator/generator_test.go b/generator/generator_test.go index 0bcf6eba..50e3b002 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -341,3 +341,28 @@ func TestParenthesesParsing(t *testing.T) { fmt.Println(string(output)) } } + +// TestQuotedStrings +func TestQuotedStrings(t *testing.T) { + input := `package test + // This is a pre-enum comment that needs (to be handled properly) + // ENUM( + // abc (x), + // ghi = "20", + //). This is an extra string comment (With parentheses of it's own) + // And (another line) with Parentheses + type Animal string + ` + g := NewGenerator() + f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) + assert.Nil(t, err, "Error parsing no struct input") + + output, err := g.Generate(f) + assert.Nil(t, err, "Error generating formatted code") + assert.Contains(t, string(output), "// AnimalAbcX is a Animal of type abc (x).") + assert.Contains(t, string(output), "AnimalGhi Animal = \"20\"") + assert.NotContains(t, string(output), "// AnimalAnd") + if false { // Debugging statement + fmt.Println(string(output)) + } +} diff --git a/generator/template_funcs.go b/generator/template_funcs.go index 493862c2..ebacd2be 100644 --- a/generator/template_funcs.go +++ b/generator/template_funcs.go @@ -67,12 +67,12 @@ func UnmapifyStringEnum(e Enum, lowercase bool) (ret string, err error) { } for _, val := range e.Values { if val.Name != skipHolder { - _, err = builder.WriteString(fmt.Sprintf("%q:%s,\n", val.RawName, val.PrefixedName)) + _, err = builder.WriteString(fmt.Sprintf("%q:%s,\n", val.ValueStr, val.PrefixedName)) if err != nil { return } - if lowercase && strings.ToLower(val.RawName) != val.RawName { - _, err = builder.WriteString(fmt.Sprintf("%q:%s,\n", strings.ToLower(val.RawName), val.PrefixedName)) + if lowercase && strings.ToLower(val.ValueStr) != val.ValueStr { + _, err = builder.WriteString(fmt.Sprintf("%q:%s,\n", strings.ToLower(val.ValueStr), val.PrefixedName)) if err != nil { return } @@ -118,9 +118,9 @@ func namifyStringEnum(e Enum) (ret string, err error) { func Offset(index int, enumType string, val EnumValue) (strResult string) { if strings.HasPrefix(enumType, "u") { // Unsigned - return strconv.FormatUint(val.Value.(uint64)-uint64(index), 10) + return strconv.FormatUint(val.ValueInt.(uint64)-uint64(index), 10) } else { // Signed - return strconv.FormatInt(val.Value.(int64)-int64(index), 10) + return strconv.FormatInt(val.ValueInt.(int64)-int64(index), 10) } } From 96d5c8d995e89e9ae595752f320bd0728ae603f6 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Sun, 26 Mar 2023 13:38:14 -0700 Subject: [PATCH 52/91] add isValid to non string enums (#183) --- .github/workflows/build_and_test.yml | 10 +- .github/workflows/release.yml | 4 +- Makefile | 8 +- _example/animal_enum.go | 7 ++ _example/color_enum.go | 7 ++ _example/commented_enum.go | 14 +++ _example/custom_prefix_enum.go | 7 ++ _example/enum_32_bit_enum.go | 7 ++ _example/enum_64_bit_enum.go | 7 ++ _example/example_enum.go | 14 +++ _example/force_lower_enum.go | 7 ++ _example/go_enum_enum_test.go | 3 +- _example/negative_enum.go | 14 +++ _example/replace_prefix_enum.go | 3 +- _example/replace_prefix_int_enum.go | 7 ++ _example/sql_enum.go | 7 ++ _example/sql_int_enum.go | 7 ++ _example/sql_str_enum.go | 7 ++ _example/sql_str_int_enum.go | 6 +- _example/strings_only_enum.go | 3 +- _example/user_template_enum.go | 7 ++ .../Test118CustomPrefixExampleFile-1.18 | 12 ++- .../Test118CustomPrefixExampleFile-og | 99 ++++++++++++++++++- generator/.snapshots/Test118ExampleFile-1.18 | 12 ++- generator/.snapshots/Test118ExampleFile-og | 99 ++++++++++++++++++- .../Test118ExampleFileMoreOptions-1.18 | 12 ++- .../Test118ExampleFileMoreOptions-og | 99 ++++++++++++++++++- .../Test118NoPrefixExampleFile-1.18 | 12 ++- .../.snapshots/Test118NoPrefixExampleFile-og | 99 ++++++++++++++++++- ...18NoPrefixExampleFileWithSnakeToCamel-1.18 | 12 ++- ...t118NoPrefixExampleFileWithSnakeToCamel-og | 99 ++++++++++++++++++- .../.snapshots/TestCustomPrefixExampleFile | 99 ++++++++++++++++++- generator/.snapshots/TestExampleFile | 99 ++++++++++++++++++- .../.snapshots/TestExampleFileMoreOptions | 99 ++++++++++++++++++- generator/.snapshots/TestNoPrefixExampleFile | 99 ++++++++++++++++++- .../TestNoPrefixExampleFileWithSnakeToCamel | 99 ++++++++++++++++++- .../.snapshots/TestReplacePrefixExampleFile | 99 ++++++++++++++++++- generator/enum.tmpl | 7 ++ generator/enum_string.tmpl | 3 +- generator/generator.go | 16 +-- generator/generator_1.18_test.go | 12 +-- generator/generator_test.go | 4 +- go.mod | 26 ++--- go.sum | 74 +++++++++----- 44 files changed, 1319 insertions(+), 128 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 268b4c80..755a137f 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -13,18 +13,14 @@ jobs: fail-fast: false matrix: go: - # Drop support of go 1.12 - # Drop support of go 1.13 - # Drop support of go 1.14 - # Drop support of go 1.15 - # Drop support of go 1.16 - - "1.17" + # Drop support of go 1.17 - "1.18" - "1.19" + - "1.20" name: run tests with go version ${{ matrix.go }} steps: - name: install go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: ${{ matrix.go }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2f07d83a..5b30e16c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,9 +15,9 @@ jobs: fetch-depth: 0 - name: Set up Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: - go-version: 1.19 + go-version: 1.20 - name: Cache Go modules uses: actions/cache@v3 diff --git a/Makefile b/Makefile index 8e49e341..8506aab4 100644 --- a/Makefile +++ b/Makefile @@ -98,8 +98,8 @@ bin/mockgen: go.sum bin/goveralls: go.sum $(call goinstall,github.com/mattn/goveralls) -snapshots: snapshots_1.17 -snapshots: snapshots_1.18 +# snapshots: snapshots_1.17 +snapshots: snapshots_1.20 snapshots_%: clean echo "##### updating snapshots for golang $* #####" @@ -107,9 +107,10 @@ snapshots_%: clean .PHONY: ci # ci: docker_1.16 -ci: docker_1.17 +# ci: docker_1.17 ci: docker_1.18 ci: docker_1.19 +ci: docker_1.20 docker_%: echo "##### testing golang $* #####" @@ -119,6 +120,7 @@ docker_%: pullimages: pullimage_1.17 pullimages: pullimage_1.18 pullimages: pullimage_1.19 +pullimages: pullimage_1.20 pullimage_%: docker pull golang:$* diff --git a/_example/animal_enum.go b/_example/animal_enum.go index b1d6a604..9ae1a9e8 100644 --- a/_example/animal_enum.go +++ b/_example/animal_enum.go @@ -44,6 +44,13 @@ func (x Animal) String() string { return fmt.Sprintf("Animal(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x Animal) IsValid() bool { + _, ok := _AnimalMap[x] + return ok +} + var _AnimalValue = map[string]Animal{ _AnimalName[0:3]: AnimalCat, _AnimalName[3:6]: AnimalDog, diff --git a/_example/color_enum.go b/_example/color_enum.go index 30005ff2..c77e2a2f 100644 --- a/_example/color_enum.go +++ b/_example/color_enum.go @@ -64,6 +64,13 @@ func (x Color) String() string { return fmt.Sprintf("Color(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x Color) IsValid() bool { + _, ok := _ColorMap[x] + return ok +} + var _ColorValue = map[string]Color{ _ColorName[0:5]: ColorBlack, strings.ToLower(_ColorName[0:5]): ColorBlack, diff --git a/_example/commented_enum.go b/_example/commented_enum.go index edecdfa8..265cad64 100644 --- a/_example/commented_enum.go +++ b/_example/commented_enum.go @@ -41,6 +41,13 @@ func (x Commented) String() string { return fmt.Sprintf("Commented(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x Commented) IsValid() bool { + _, ok := _CommentedMap[x] + return ok +} + var _CommentedValue = map[string]Commented{ _CommentedName[0:6]: CommentedValue1, strings.ToLower(_CommentedName[0:6]): CommentedValue1, @@ -106,6 +113,13 @@ func (x ComplexCommented) String() string { return fmt.Sprintf("ComplexCommented(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x ComplexCommented) IsValid() bool { + _, ok := _ComplexCommentedMap[x] + return ok +} + var _ComplexCommentedValue = map[string]ComplexCommented{ _ComplexCommentedName[0:6]: ComplexCommentedValue1, strings.ToLower(_ComplexCommentedName[0:6]): ComplexCommentedValue1, diff --git a/_example/custom_prefix_enum.go b/_example/custom_prefix_enum.go index 9822a406..3309382b 100644 --- a/_example/custom_prefix_enum.go +++ b/_example/custom_prefix_enum.go @@ -38,6 +38,13 @@ func (x Product) String() string { return fmt.Sprintf("Product(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x Product) IsValid() bool { + _, ok := _ProductMap[x] + return ok +} + var _ProductValue = map[string]Product{ _ProductName[0:5]: AcmeIncProductAnvil, _ProductName[5:13]: AcmeIncProductDynamite, diff --git a/_example/enum_32_bit_enum.go b/_example/enum_32_bit_enum.go index 287611b8..24f46793 100644 --- a/_example/enum_32_bit_enum.go +++ b/_example/enum_32_bit_enum.go @@ -87,6 +87,13 @@ func (x Enum32bit) String() string { return fmt.Sprintf("Enum32bit(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x Enum32bit) IsValid() bool { + _, ok := _Enum32bitMap[x] + return ok +} + var _Enum32bitValue = map[string]Enum32bit{ _Enum32bitName[0:5]: Enum32bitUnkno, _Enum32bitName[5:10]: Enum32bitE2P15, diff --git a/_example/enum_64_bit_enum.go b/_example/enum_64_bit_enum.go index d80fe053..6ccb166b 100644 --- a/_example/enum_64_bit_enum.go +++ b/_example/enum_64_bit_enum.go @@ -103,6 +103,13 @@ func (x Enum64bit) String() string { return fmt.Sprintf("Enum64bit(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x Enum64bit) IsValid() bool { + _, ok := _Enum64bitMap[x] + return ok +} + var _Enum64bitValue = map[string]Enum64bit{ _Enum64bitName[0:5]: Enum64bitUnkno, _Enum64bitName[5:10]: Enum64bitE2P15, diff --git a/_example/example_enum.go b/_example/example_enum.go index 88600921..cb76fe52 100644 --- a/_example/example_enum.go +++ b/_example/example_enum.go @@ -120,6 +120,13 @@ func (x Make) String() string { return fmt.Sprintf("Make(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x Make) IsValid() bool { + _, ok := _MakeMap[x] + return ok +} + var _MakeValue = map[string]Make{ _MakeName[0:6]: MakeToyota, strings.ToLower(_MakeName[0:6]): MakeToyota, @@ -254,6 +261,13 @@ func (x NoZeros) String() string { return fmt.Sprintf("NoZeros(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x NoZeros) IsValid() bool { + _, ok := _NoZerosMap[x] + return ok +} + var _NoZerosValue = map[string]NoZeros{ _NoZerosName[0:5]: NoZerosStart, strings.ToLower(_NoZerosName[0:5]): NoZerosStart, diff --git a/_example/force_lower_enum.go b/_example/force_lower_enum.go index 4ba44f11..97bb5390 100644 --- a/_example/force_lower_enum.go +++ b/_example/force_lower_enum.go @@ -35,6 +35,13 @@ func (x ForceLowerType) String() string { return fmt.Sprintf("ForceLowerType(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x ForceLowerType) IsValid() bool { + _, ok := _ForceLowerTypeMap[x] + return ok +} + var _ForceLowerTypeValue = map[string]ForceLowerType{ _ForceLowerTypeName[0:8]: ForceLowerTypeDataSwap, _ForceLowerTypeName[8:16]: ForceLowerTypeBootNode, diff --git a/_example/go_enum_enum_test.go b/_example/go_enum_enum_test.go index 53d8e5ac..4ac5436e 100644 --- a/_example/go_enum_enum_test.go +++ b/_example/go_enum_enum_test.go @@ -25,7 +25,8 @@ func (x TestOnlyEnum) String() string { return string(x) } -// String implements the Stringer interface. +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values func (x TestOnlyEnum) IsValid() bool { _, err := ParseTestOnlyEnum(string(x)) return err == nil diff --git a/_example/negative_enum.go b/_example/negative_enum.go index 52faca23..ae0f4997 100644 --- a/_example/negative_enum.go +++ b/_example/negative_enum.go @@ -42,6 +42,13 @@ func (x AllNegative) String() string { return fmt.Sprintf("AllNegative(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x AllNegative) IsValid() bool { + _, ok := _AllNegativeMap[x] + return ok +} + var _AllNegativeValue = map[string]AllNegative{ _AllNegativeName[0:7]: AllNegativeUnknown, strings.ToLower(_AllNegativeName[0:7]): AllNegativeUnknown, @@ -92,6 +99,13 @@ func (x Status) String() string { return fmt.Sprintf("Status(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x Status) IsValid() bool { + _, ok := _StatusMap[x] + return ok +} + var _StatusValue = map[string]Status{ _StatusName[0:7]: StatusUnknown, strings.ToLower(_StatusName[0:7]): StatusUnknown, diff --git a/_example/replace_prefix_enum.go b/_example/replace_prefix_enum.go index 2d2b921d..24dd2879 100644 --- a/_example/replace_prefix_enum.go +++ b/_example/replace_prefix_enum.go @@ -40,7 +40,8 @@ func (x Shop) String() string { return string(x) } -// String implements the Stringer interface. +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values func (x Shop) IsValid() bool { _, err := ParseShop(string(x)) return err == nil diff --git a/_example/replace_prefix_int_enum.go b/_example/replace_prefix_int_enum.go index ad4a4cd1..4b09902f 100644 --- a/_example/replace_prefix_int_enum.go +++ b/_example/replace_prefix_int_enum.go @@ -51,6 +51,13 @@ func (x IntShop) String() string { return fmt.Sprintf("IntShop(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x IntShop) IsValid() bool { + _, ok := _IntShopMap[x] + return ok +} + var _IntShopValue = map[string]IntShop{ _IntShopName[0:18]: AcmeInt_SOME_PLACE_AWESOME, _IntShopName[18:31]: AcmeInt_SomewhereElse, diff --git a/_example/sql_enum.go b/_example/sql_enum.go index 46142ac8..7f2b46d9 100644 --- a/_example/sql_enum.go +++ b/_example/sql_enum.go @@ -40,6 +40,13 @@ func (x ProjectStatus) String() string { return fmt.Sprintf("ProjectStatus(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x ProjectStatus) IsValid() bool { + _, ok := _ProjectStatusMap[x] + return ok +} + var _ProjectStatusValue = map[string]ProjectStatus{ _ProjectStatusName[0:7]: ProjectStatusPending, _ProjectStatusName[7:13]: ProjectStatusInWork, diff --git a/_example/sql_int_enum.go b/_example/sql_int_enum.go index 34bcc22a..9fad36f3 100644 --- a/_example/sql_int_enum.go +++ b/_example/sql_int_enum.go @@ -46,6 +46,13 @@ func (x ImageType) String() string { return fmt.Sprintf("ImageType(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x ImageType) IsValid() bool { + _, ok := _ImageTypeMap[x] + return ok +} + var _ImageTypeValue = map[string]ImageType{ _ImageTypeName[0:4]: ImageTypeJpeg, _ImageTypeName[4:7]: ImageTypeJpg, diff --git a/_example/sql_str_enum.go b/_example/sql_str_enum.go index 9e04ec30..98a75926 100644 --- a/_example/sql_str_enum.go +++ b/_example/sql_str_enum.go @@ -42,6 +42,13 @@ func (x JobState) String() string { return fmt.Sprintf("JobState(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x JobState) IsValid() bool { + _, ok := _JobStateMap[x] + return ok +} + var _JobStateValue = map[string]JobState{ _JobStateName[0:7]: JobStatePending, _JobStateName[7:17]: JobStateProcessing, diff --git a/_example/sql_str_int_enum.go b/_example/sql_str_int_enum.go index 43ee7732..9353d46d 100644 --- a/_example/sql_str_int_enum.go +++ b/_example/sql_str_int_enum.go @@ -48,7 +48,8 @@ func (x GreekGod) String() string { return string(x) } -// String implements the Stringer interface. +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values func (x GreekGod) IsValid() bool { _, err := ParseGreekGod(string(x)) return err == nil @@ -243,7 +244,8 @@ func (x GreekGodCustom) String() string { return string(x) } -// String implements the Stringer interface. +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values func (x GreekGodCustom) IsValid() bool { _, err := ParseGreekGodCustom(string(x)) return err == nil diff --git a/_example/strings_only_enum.go b/_example/strings_only_enum.go index 2cf89841..36fbb46a 100644 --- a/_example/strings_only_enum.go +++ b/_example/strings_only_enum.go @@ -52,7 +52,8 @@ func (x StrState) String() string { return string(x) } -// String implements the Stringer interface. +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values func (x StrState) IsValid() bool { _, err := ParseStrState(string(x)) return err == nil diff --git a/_example/user_template_enum.go b/_example/user_template_enum.go index bcd41c9c..85b761ff 100644 --- a/_example/user_template_enum.go +++ b/_example/user_template_enum.go @@ -38,6 +38,13 @@ func (x OceanColor) String() string { return fmt.Sprintf("OceanColor(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x OceanColor) IsValid() bool { + _, ok := _OceanColorMap[x] + return ok +} + var _OceanColorValue = map[string]OceanColor{ _OceanColorName[0:8]: OceanColorCerulean, _OceanColorName[8:12]: OceanColorBlue, diff --git a/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 b/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 index c034f177..55722e07 100644 --- a/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 +++ b/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 @@ -1,4 +1,4 @@ -([]string) (len=282) { +([]string) (len=288) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -10,11 +10,10 @@ (string) (len=8) "import (", (string) (len=22) "\t\"database/sql/driver\"", (string) (len=16) "\t\"encoding/json\"", + (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strconv\"", (string) (len=10) "\t\"strings\"", - (string) "", - (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -44,6 +43,13 @@ (string) (len=40) "\treturn fmt.Sprintf(\"ChangeType(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x ChangeType) IsValid() bool {", + (string) (len=27) "\t_, ok := _ChangeTypeMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=45) "var _ChangeTypeValue = map[string]ChangeType{", (string) (len=63) "\t_ChangeTypeName[0:6]: Custom_prefix_Create,", (string) (len=63) "\tstrings.ToLower(_ChangeTypeName[0:6]): Custom_prefix_Create,", diff --git a/generator/.snapshots/Test118CustomPrefixExampleFile-og b/generator/.snapshots/Test118CustomPrefixExampleFile-og index 2406e01e..7af76701 100644 --- a/generator/.snapshots/Test118CustomPrefixExampleFile-og +++ b/generator/.snapshots/Test118CustomPrefixExampleFile-og @@ -1,4 +1,4 @@ -([]string) (len=3971) { +([]string) (len=4062) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -10,11 +10,10 @@ (string) (len=8) "import (", (string) (len=22) "\t\"database/sql/driver\"", (string) (len=16) "\t\"encoding/json\"", + (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strconv\"", (string) (len=10) "\t\"strings\"", - (string) "", - (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -44,6 +43,13 @@ (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=32) "func (x Animal) IsValid() bool {", + (string) (len=23) "\t_, ok := _AnimalMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=37) "var _AnimalValue = map[string]Animal{", (string) (len=55) "\t_AnimalName[0:3]: Custom_prefix_Cat,", (string) (len=55) "\tstrings.ToLower(_AnimalName[0:3]): Custom_prefix_Cat,", @@ -308,6 +314,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Cases) IsValid() bool {", + (string) (len=22) "\t_, ok := _CasesMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _CasesValue = map[string]Cases{", (string) (len=62) "\t_CasesName[0:10]: Custom_prefix_Test_lower,", (string) (len=62) "\tstrings.ToLower(_CasesName[0:10]): Custom_prefix_Test_lower,", @@ -584,6 +597,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Color) IsValid() bool {", + (string) (len=22) "\t_, ok := _ColorMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ColorValue = map[string]Color{", (string) (len=57) "\t_ColorName[0:5]: Custom_prefix_Black,", (string) (len=57) "\tstrings.ToLower(_ColorName[0:5]): Custom_prefix_Black,", @@ -869,6 +889,13 @@ (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=42) "func (x ColorWithComment) IsValid() bool {", + (string) (len=33) "\t_, ok := _ColorWithCommentMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", (string) (len=68) "\t_ColorWithCommentName[0:5]: Custom_prefix_Black,", (string) (len=68) "\tstrings.ToLower(_ColorWithCommentName[0:5]): Custom_prefix_Black,", @@ -1154,6 +1181,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment2) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment2Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", (string) (len=69) "\t_ColorWithComment2Name[0:5]: Custom_prefix_Black,", (string) (len=69) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): Custom_prefix_Black,", @@ -1449,6 +1483,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment3) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment3Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", (string) (len=69) "\t_ColorWithComment3Name[0:5]: Custom_prefix_Black,", (string) (len=69) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): Custom_prefix_Black,", @@ -1752,6 +1793,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment4) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment4Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", (string) (len=69) "\t_ColorWithComment4Name[0:5]: Custom_prefix_Black,", (string) (len=69) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): Custom_prefix_Black,", @@ -2064,6 +2112,13 @@ (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=35) "func (x Enum64bit) IsValid() bool {", + (string) (len=26) "\t_, ok := _Enum64bitMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", (string) (len=63) "\t_Enum64bitName[0:7]: Custom_prefix_Unknown,", (string) (len=63) "\tstrings.ToLower(_Enum64bitName[0:7]): Custom_prefix_Unknown,", @@ -2356,6 +2411,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Model) IsValid() bool {", + (string) (len=22) "\t_, ok := _ModelMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ModelValue = map[string]Model{", (string) (len=58) "\t_ModelName[0:6]: Custom_prefix_Toyota,", (string) (len=58) "\tstrings.ToLower(_ModelName[0:6]): Custom_prefix_Toyota,", @@ -2620,6 +2682,13 @@ (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=34) "func (x NonASCII) IsValid() bool {", + (string) (len=25) "\t_, ok := _NonASCIIMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", (string) (len=67) "\t_NonASCIIName[0:12]: Custom_prefix_Продам,", (string) (len=67) "\tstrings.ToLower(_NonASCIIName[0:12]): Custom_prefix_Продам,", @@ -2896,6 +2965,13 @@ (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x Sanitizing) IsValid() bool {", + (string) (len=27) "\t_, ok := _SanitizingMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", (string) (len=67) "\t_SanitizingName[0:11]: Custom_prefix_TestHyphen,", (string) (len=67) "\tstrings.ToLower(_SanitizingName[0:11]): Custom_prefix_TestHyphen,", @@ -3168,6 +3244,13 @@ (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=30) "func (x Soda) IsValid() bool {", + (string) (len=21) "\t_, ok := _SodaMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=33) "var _SodaValue = map[string]Soda{", (string) (len=54) "\t_SodaName[0:4]: Custom_prefix_Coke,", (string) (len=54) "\tstrings.ToLower(_SodaName[0:4]): Custom_prefix_Coke,", @@ -3429,6 +3512,13 @@ (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=38) "func (x StartNotZero) IsValid() bool {", + (string) (len=29) "\t_, ok := _StartNotZeroMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", (string) (len=71) "\t_StartNotZeroName[0:12]: Custom_prefix_StartWithNum,", (string) (len=71) "\tstrings.ToLower(_StartNotZeroName[0:12]): Custom_prefix_StartWithNum,", @@ -3680,7 +3770,8 @@ (string) (len=17) "\treturn string(x)", (string) (len=1) "}", (string) "", - (string) (len=44) "// String implements the Stringer interface.", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", (string) (len=36) "func (x StringEnum) IsValid() bool {", (string) (len=37) "\t_, err := ParseStringEnum(string(x))", (string) (len=18) "\treturn err == nil", diff --git a/generator/.snapshots/Test118ExampleFile-1.18 b/generator/.snapshots/Test118ExampleFile-1.18 index fb83c200..9cd671aa 100644 --- a/generator/.snapshots/Test118ExampleFile-1.18 +++ b/generator/.snapshots/Test118ExampleFile-1.18 @@ -1,4 +1,4 @@ -([]string) (len=166) { +([]string) (len=172) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -9,10 +9,9 @@ (string) "", (string) (len=8) "import (", (string) (len=22) "\t\"database/sql/driver\"", + (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", - (string) "", - (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -55,6 +54,13 @@ (string) (len=40) "\treturn fmt.Sprintf(\"ChangeType(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x ChangeType) IsValid() bool {", + (string) (len=27) "\t_, ok := _ChangeTypeMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=45) "var _ChangeTypeValue = map[string]ChangeType{", (string) (len=59) "\t_ChangeTypeName[0:6]: ChangeTypeCreate,", (string) (len=59) "\tstrings.ToLower(_ChangeTypeName[0:6]): ChangeTypeCreate,", diff --git a/generator/.snapshots/Test118ExampleFile-og b/generator/.snapshots/Test118ExampleFile-og index 2d71705a..cd0d19eb 100644 --- a/generator/.snapshots/Test118ExampleFile-og +++ b/generator/.snapshots/Test118ExampleFile-og @@ -1,4 +1,4 @@ -([]string) (len=2329) { +([]string) (len=2420) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -9,10 +9,9 @@ (string) "", (string) (len=8) "import (", (string) (len=22) "\t\"database/sql/driver\"", + (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", - (string) "", - (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -55,6 +54,13 @@ (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=32) "func (x Animal) IsValid() bool {", + (string) (len=23) "\t_, ok := _AnimalMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=37) "var _AnimalValue = map[string]Animal{", (string) (len=47) "\t_AnimalName[0:3]: AnimalCat,", (string) (len=47) "\tstrings.ToLower(_AnimalName[0:3]): AnimalCat,", @@ -205,6 +211,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Cases) IsValid() bool {", + (string) (len=22) "\t_, ok := _CasesMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _CasesValue = map[string]Cases{", (string) (len=53) "\t_CasesName[0:10]: CasesTest_lower,", (string) (len=53) "\tstrings.ToLower(_CasesName[0:10]): CasesTest_lower,", @@ -371,6 +384,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Color) IsValid() bool {", + (string) (len=22) "\t_, ok := _ColorMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ColorValue = map[string]Color{", (string) (len=48) "\t_ColorName[0:5]: ColorBlack,", (string) (len=48) "\tstrings.ToLower(_ColorName[0:5]): ColorBlack,", @@ -546,6 +566,13 @@ (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=42) "func (x ColorWithComment) IsValid() bool {", + (string) (len=33) "\t_, ok := _ColorWithCommentMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", (string) (len=70) "\t_ColorWithCommentName[0:5]: ColorWithCommentBlack,", (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[0:5]): ColorWithCommentBlack,", @@ -721,6 +748,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment2) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment2Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", (string) (len=72) "\t_ColorWithComment2Name[0:5]: ColorWithComment2Black,", (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): ColorWithComment2Black,", @@ -909,6 +943,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment3) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment3Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", (string) (len=72) "\t_ColorWithComment3Name[0:5]: ColorWithComment3Black,", (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): ColorWithComment3Black,", @@ -1104,6 +1145,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment4) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment4Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", (string) (len=72) "\t_ColorWithComment4Name[0:5]: ColorWithComment4Black,", (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): ColorWithComment4Black,", @@ -1314,6 +1362,13 @@ (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=35) "func (x Enum64bit) IsValid() bool {", + (string) (len=26) "\t_, ok := _Enum64bitMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", (string) (len=58) "\t_Enum64bitName[0:7]: Enum64bitUnknown,", (string) (len=58) "\tstrings.ToLower(_Enum64bitName[0:7]): Enum64bitUnknown,", @@ -1492,6 +1547,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Model) IsValid() bool {", + (string) (len=22) "\t_, ok := _ModelMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ModelValue = map[string]Model{", (string) (len=49) "\t_ModelName[0:6]: ModelToyota,", (string) (len=49) "\tstrings.ToLower(_ModelName[0:6]): ModelToyota,", @@ -1642,6 +1704,13 @@ (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=34) "func (x NonASCII) IsValid() bool {", + (string) (len=25) "\t_, ok := _NonASCIIMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", (string) (len=61) "\t_NonASCIIName[0:12]: NonASCIIПродам,", (string) (len=61) "\tstrings.ToLower(_NonASCIIName[0:12]): NonASCIIПродам,", @@ -1808,6 +1877,13 @@ (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x Sanitizing) IsValid() bool {", + (string) (len=27) "\t_, ok := _SanitizingMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", (string) (len=63) "\t_SanitizingName[0:11]: SanitizingTestHyphen,", (string) (len=63) "\tstrings.ToLower(_SanitizingName[0:11]): SanitizingTestHyphen,", @@ -1966,6 +2042,13 @@ (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=30) "func (x Soda) IsValid() bool {", + (string) (len=21) "\t_, ok := _SodaMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=33) "var _SodaValue = map[string]Soda{", (string) (len=44) "\t_SodaName[0:4]: SodaCoke,", (string) (len=44) "\tstrings.ToLower(_SodaName[0:4]): SodaCoke,", @@ -2112,6 +2195,13 @@ (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=38) "func (x StartNotZero) IsValid() bool {", + (string) (len=29) "\t_, ok := _StartNotZeroMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", (string) (len=69) "\t_StartNotZeroName[0:12]: StartNotZeroStartWithNum,", (string) (len=69) "\tstrings.ToLower(_StartNotZeroName[0:12]): StartNotZeroStartWithNum,", @@ -2249,7 +2339,8 @@ (string) (len=17) "\treturn string(x)", (string) (len=1) "}", (string) "", - (string) (len=44) "// String implements the Stringer interface.", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", (string) (len=36) "func (x StringEnum) IsValid() bool {", (string) (len=37) "\t_, err := ParseStringEnum(string(x))", (string) (len=18) "\treturn err == nil", diff --git a/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 b/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 index cb205c20..97b12005 100644 --- a/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 +++ b/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 @@ -1,4 +1,4 @@ -([]string) (len=180) { +([]string) (len=186) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -9,10 +9,9 @@ (string) "", (string) (len=8) "import (", (string) (len=22) "\t\"database/sql/driver\"", + (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", - (string) "", - (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -55,6 +54,13 @@ (string) (len=40) "\treturn fmt.Sprintf(\"ChangeType(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x ChangeType) IsValid() bool {", + (string) (len=27) "\t_, ok := _ChangeTypeMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=45) "var _ChangeTypeValue = map[string]ChangeType{", (string) (len=59) "\t_ChangeTypeName[0:6]: ChangeTypeCreate,", (string) (len=59) "\tstrings.ToLower(_ChangeTypeName[0:6]): ChangeTypeCreate,", diff --git a/generator/.snapshots/Test118ExampleFileMoreOptions-og b/generator/.snapshots/Test118ExampleFileMoreOptions-og index cea36139..8dfd9566 100644 --- a/generator/.snapshots/Test118ExampleFileMoreOptions-og +++ b/generator/.snapshots/Test118ExampleFileMoreOptions-og @@ -1,4 +1,4 @@ -([]string) (len=2525) { +([]string) (len=2616) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -9,10 +9,9 @@ (string) "", (string) (len=8) "import (", (string) (len=22) "\t\"database/sql/driver\"", + (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", - (string) "", - (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -55,6 +54,13 @@ (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=32) "func (x Animal) IsValid() bool {", + (string) (len=23) "\t_, ok := _AnimalMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=37) "var _AnimalValue = map[string]Animal{", (string) (len=47) "\t_AnimalName[0:3]: AnimalCat,", (string) (len=47) "\tstrings.ToLower(_AnimalName[0:3]): AnimalCat,", @@ -219,6 +225,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Cases) IsValid() bool {", + (string) (len=22) "\t_, ok := _CasesMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _CasesValue = map[string]Cases{", (string) (len=53) "\t_CasesName[0:10]: CasesTest_lower,", (string) (len=53) "\tstrings.ToLower(_CasesName[0:10]): CasesTest_lower,", @@ -399,6 +412,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Color) IsValid() bool {", + (string) (len=22) "\t_, ok := _ColorMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ColorValue = map[string]Color{", (string) (len=48) "\t_ColorName[0:5]: ColorBlack,", (string) (len=48) "\tstrings.ToLower(_ColorName[0:5]): ColorBlack,", @@ -588,6 +608,13 @@ (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=42) "func (x ColorWithComment) IsValid() bool {", + (string) (len=33) "\t_, ok := _ColorWithCommentMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", (string) (len=70) "\t_ColorWithCommentName[0:5]: ColorWithCommentBlack,", (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[0:5]): ColorWithCommentBlack,", @@ -777,6 +804,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment2) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment2Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", (string) (len=72) "\t_ColorWithComment2Name[0:5]: ColorWithComment2Black,", (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): ColorWithComment2Black,", @@ -979,6 +1013,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment3) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment3Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", (string) (len=72) "\t_ColorWithComment3Name[0:5]: ColorWithComment3Black,", (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): ColorWithComment3Black,", @@ -1188,6 +1229,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment4) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment4Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", (string) (len=72) "\t_ColorWithComment4Name[0:5]: ColorWithComment4Black,", (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): ColorWithComment4Black,", @@ -1412,6 +1460,13 @@ (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=35) "func (x Enum64bit) IsValid() bool {", + (string) (len=26) "\t_, ok := _Enum64bitMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", (string) (len=58) "\t_Enum64bitName[0:7]: Enum64bitUnknown,", (string) (len=58) "\tstrings.ToLower(_Enum64bitName[0:7]): Enum64bitUnknown,", @@ -1604,6 +1659,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Model) IsValid() bool {", + (string) (len=22) "\t_, ok := _ModelMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ModelValue = map[string]Model{", (string) (len=49) "\t_ModelName[0:6]: ModelToyota,", (string) (len=49) "\tstrings.ToLower(_ModelName[0:6]): ModelToyota,", @@ -1768,6 +1830,13 @@ (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=34) "func (x NonASCII) IsValid() bool {", + (string) (len=25) "\t_, ok := _NonASCIIMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", (string) (len=61) "\t_NonASCIIName[0:12]: NonASCIIПродам,", (string) (len=61) "\tstrings.ToLower(_NonASCIIName[0:12]): NonASCIIПродам,", @@ -1948,6 +2017,13 @@ (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x Sanitizing) IsValid() bool {", + (string) (len=27) "\t_, ok := _SanitizingMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", (string) (len=63) "\t_SanitizingName[0:11]: SanitizingTestHyphen,", (string) (len=63) "\tstrings.ToLower(_SanitizingName[0:11]): SanitizingTestHyphen,", @@ -2120,6 +2196,13 @@ (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=30) "func (x Soda) IsValid() bool {", + (string) (len=21) "\t_, ok := _SodaMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=33) "var _SodaValue = map[string]Soda{", (string) (len=44) "\t_SodaName[0:4]: SodaCoke,", (string) (len=44) "\tstrings.ToLower(_SodaName[0:4]): SodaCoke,", @@ -2280,6 +2363,13 @@ (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=38) "func (x StartNotZero) IsValid() bool {", + (string) (len=29) "\t_, ok := _StartNotZeroMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", (string) (len=69) "\t_StartNotZeroName[0:12]: StartNotZeroStartWithNum,", (string) (len=69) "\tstrings.ToLower(_StartNotZeroName[0:12]): StartNotZeroStartWithNum,", @@ -2431,7 +2521,8 @@ (string) (len=17) "\treturn string(x)", (string) (len=1) "}", (string) "", - (string) (len=44) "// String implements the Stringer interface.", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", (string) (len=36) "func (x StringEnum) IsValid() bool {", (string) (len=37) "\t_, err := ParseStringEnum(string(x))", (string) (len=18) "\treturn err == nil", diff --git a/generator/.snapshots/Test118NoPrefixExampleFile-1.18 b/generator/.snapshots/Test118NoPrefixExampleFile-1.18 index e6b37e93..b51e97e4 100644 --- a/generator/.snapshots/Test118NoPrefixExampleFile-1.18 +++ b/generator/.snapshots/Test118NoPrefixExampleFile-1.18 @@ -1,4 +1,4 @@ -([]string) (len=92) { +([]string) (len=98) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -8,10 +8,9 @@ (string) (len=17) "package generator", (string) "", (string) (len=8) "import (", + (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", - (string) "", - (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -41,6 +40,13 @@ (string) (len=40) "\treturn fmt.Sprintf(\"ChangeType(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x ChangeType) IsValid() bool {", + (string) (len=27) "\t_, ok := _ChangeTypeMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=45) "var _ChangeTypeValue = map[string]ChangeType{", (string) (len=49) "\t_ChangeTypeName[0:6]: Create,", (string) (len=49) "\tstrings.ToLower(_ChangeTypeName[0:6]): Create,", diff --git a/generator/.snapshots/Test118NoPrefixExampleFile-og b/generator/.snapshots/Test118NoPrefixExampleFile-og index cc893268..4df6e5c1 100644 --- a/generator/.snapshots/Test118NoPrefixExampleFile-og +++ b/generator/.snapshots/Test118NoPrefixExampleFile-og @@ -1,4 +1,4 @@ -([]string) (len=1299) { +([]string) (len=1390) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -8,10 +8,9 @@ (string) (len=17) "package generator", (string) "", (string) (len=8) "import (", + (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", - (string) "", - (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -41,6 +40,13 @@ (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=32) "func (x Animal) IsValid() bool {", + (string) (len=23) "\t_, ok := _AnimalMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=37) "var _AnimalValue = map[string]Animal{", (string) (len=41) "\t_AnimalName[0:3]: Cat,", (string) (len=41) "\tstrings.ToLower(_AnimalName[0:3]): Cat,", @@ -118,6 +124,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Cases) IsValid() bool {", + (string) (len=22) "\t_, ok := _CasesMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _CasesValue = map[string]Cases{", (string) (len=48) "\t_CasesName[0:10]: Test_lower,", (string) (len=48) "\tstrings.ToLower(_CasesName[0:10]): Test_lower,", @@ -207,6 +220,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Color) IsValid() bool {", + (string) (len=22) "\t_, ok := _ColorMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ColorValue = map[string]Color{", (string) (len=43) "\t_ColorName[0:5]: Black,", (string) (len=43) "\tstrings.ToLower(_ColorName[0:5]): Black,", @@ -305,6 +325,13 @@ (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=42) "func (x ColorWithComment) IsValid() bool {", + (string) (len=33) "\t_, ok := _ColorWithCommentMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", (string) (len=54) "\t_ColorWithCommentName[0:5]: Black,", (string) (len=54) "\tstrings.ToLower(_ColorWithCommentName[0:5]): Black,", @@ -403,6 +430,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment2) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment2Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", (string) (len=55) "\t_ColorWithComment2Name[0:5]: Black,", (string) (len=55) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): Black,", @@ -511,6 +545,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment3) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment3Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", (string) (len=55) "\t_ColorWithComment3Name[0:5]: Black,", (string) (len=55) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): Black,", @@ -627,6 +668,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment4) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment4Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", (string) (len=55) "\t_ColorWithComment4Name[0:5]: Black,", (string) (len=55) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): Black,", @@ -752,6 +800,13 @@ (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=35) "func (x Enum64bit) IsValid() bool {", + (string) (len=26) "\t_, ok := _Enum64bitMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", (string) (len=49) "\t_Enum64bitName[0:7]: Unknown,", (string) (len=49) "\tstrings.ToLower(_Enum64bitName[0:7]): Unknown,", @@ -857,6 +912,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Model) IsValid() bool {", + (string) (len=22) "\t_, ok := _ModelMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ModelValue = map[string]Model{", (string) (len=44) "\t_ModelName[0:6]: Toyota,", (string) (len=44) "\tstrings.ToLower(_ModelName[0:6]): Toyota,", @@ -934,6 +996,13 @@ (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=34) "func (x NonASCII) IsValid() bool {", + (string) (len=25) "\t_, ok := _NonASCIIMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", (string) (len=53) "\t_NonASCIIName[0:12]: Продам,", (string) (len=53) "\tstrings.ToLower(_NonASCIIName[0:12]): Продам,", @@ -1023,6 +1092,13 @@ (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x Sanitizing) IsValid() bool {", + (string) (len=27) "\t_, ok := _SanitizingMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", (string) (len=53) "\t_SanitizingName[0:11]: TestHyphen,", (string) (len=53) "\tstrings.ToLower(_SanitizingName[0:11]): TestHyphen,", @@ -1108,6 +1184,13 @@ (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=30) "func (x Soda) IsValid() bool {", + (string) (len=21) "\t_, ok := _SodaMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=33) "var _SodaValue = map[string]Soda{", (string) (len=40) "\t_SodaName[0:4]: Coke,", (string) (len=40) "\tstrings.ToLower(_SodaName[0:4]): Coke,", @@ -1182,6 +1265,13 @@ (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=38) "func (x StartNotZero) IsValid() bool {", + (string) (len=29) "\t_, ok := _StartNotZeroMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", (string) (len=57) "\t_StartNotZeroName[0:12]: StartWithNum,", (string) (len=57) "\tstrings.ToLower(_StartNotZeroName[0:12]): StartWithNum,", @@ -1246,7 +1336,8 @@ (string) (len=17) "\treturn string(x)", (string) (len=1) "}", (string) "", - (string) (len=44) "// String implements the Stringer interface.", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", (string) (len=36) "func (x StringEnum) IsValid() bool {", (string) (len=37) "\t_, err := ParseStringEnum(string(x))", (string) (len=18) "\treturn err == nil", diff --git a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-1.18 b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-1.18 index e6b37e93..b51e97e4 100644 --- a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-1.18 +++ b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-1.18 @@ -1,4 +1,4 @@ -([]string) (len=92) { +([]string) (len=98) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -8,10 +8,9 @@ (string) (len=17) "package generator", (string) "", (string) (len=8) "import (", + (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", - (string) "", - (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -41,6 +40,13 @@ (string) (len=40) "\treturn fmt.Sprintf(\"ChangeType(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x ChangeType) IsValid() bool {", + (string) (len=27) "\t_, ok := _ChangeTypeMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=45) "var _ChangeTypeValue = map[string]ChangeType{", (string) (len=49) "\t_ChangeTypeName[0:6]: Create,", (string) (len=49) "\tstrings.ToLower(_ChangeTypeName[0:6]): Create,", diff --git a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og index e7101c33..82a21133 100644 --- a/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og +++ b/generator/.snapshots/Test118NoPrefixExampleFileWithSnakeToCamel-og @@ -1,4 +1,4 @@ -([]string) (len=1299) { +([]string) (len=1390) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -8,10 +8,9 @@ (string) (len=17) "package generator", (string) "", (string) (len=8) "import (", + (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", - (string) "", - (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -41,6 +40,13 @@ (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=32) "func (x Animal) IsValid() bool {", + (string) (len=23) "\t_, ok := _AnimalMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=37) "var _AnimalValue = map[string]Animal{", (string) (len=41) "\t_AnimalName[0:3]: Cat,", (string) (len=41) "\tstrings.ToLower(_AnimalName[0:3]): Cat,", @@ -118,6 +124,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Cases) IsValid() bool {", + (string) (len=22) "\t_, ok := _CasesMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _CasesValue = map[string]Cases{", (string) (len=47) "\t_CasesName[0:10]: TestLower,", (string) (len=47) "\tstrings.ToLower(_CasesName[0:10]): TestLower,", @@ -207,6 +220,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Color) IsValid() bool {", + (string) (len=22) "\t_, ok := _ColorMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ColorValue = map[string]Color{", (string) (len=43) "\t_ColorName[0:5]: Black,", (string) (len=43) "\tstrings.ToLower(_ColorName[0:5]): Black,", @@ -305,6 +325,13 @@ (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=42) "func (x ColorWithComment) IsValid() bool {", + (string) (len=33) "\t_, ok := _ColorWithCommentMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", (string) (len=54) "\t_ColorWithCommentName[0:5]: Black,", (string) (len=54) "\tstrings.ToLower(_ColorWithCommentName[0:5]): Black,", @@ -403,6 +430,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment2) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment2Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", (string) (len=55) "\t_ColorWithComment2Name[0:5]: Black,", (string) (len=55) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): Black,", @@ -511,6 +545,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment3) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment3Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", (string) (len=55) "\t_ColorWithComment3Name[0:5]: Black,", (string) (len=55) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): Black,", @@ -627,6 +668,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment4) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment4Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", (string) (len=55) "\t_ColorWithComment4Name[0:5]: Black,", (string) (len=55) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): Black,", @@ -752,6 +800,13 @@ (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=35) "func (x Enum64bit) IsValid() bool {", + (string) (len=26) "\t_, ok := _Enum64bitMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", (string) (len=49) "\t_Enum64bitName[0:7]: Unknown,", (string) (len=49) "\tstrings.ToLower(_Enum64bitName[0:7]): Unknown,", @@ -857,6 +912,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Model) IsValid() bool {", + (string) (len=22) "\t_, ok := _ModelMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ModelValue = map[string]Model{", (string) (len=44) "\t_ModelName[0:6]: Toyota,", (string) (len=44) "\tstrings.ToLower(_ModelName[0:6]): Toyota,", @@ -934,6 +996,13 @@ (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=34) "func (x NonASCII) IsValid() bool {", + (string) (len=25) "\t_, ok := _NonASCIIMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", (string) (len=53) "\t_NonASCIIName[0:12]: Продам,", (string) (len=53) "\tstrings.ToLower(_NonASCIIName[0:12]): Продам,", @@ -1023,6 +1092,13 @@ (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x Sanitizing) IsValid() bool {", + (string) (len=27) "\t_, ok := _SanitizingMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", (string) (len=53) "\t_SanitizingName[0:11]: TestHyphen,", (string) (len=53) "\tstrings.ToLower(_SanitizingName[0:11]): TestHyphen,", @@ -1108,6 +1184,13 @@ (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=30) "func (x Soda) IsValid() bool {", + (string) (len=21) "\t_, ok := _SodaMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=33) "var _SodaValue = map[string]Soda{", (string) (len=40) "\t_SodaName[0:4]: Coke,", (string) (len=40) "\tstrings.ToLower(_SodaName[0:4]): Coke,", @@ -1182,6 +1265,13 @@ (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=38) "func (x StartNotZero) IsValid() bool {", + (string) (len=29) "\t_, ok := _StartNotZeroMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", (string) (len=57) "\t_StartNotZeroName[0:12]: StartWithNum,", (string) (len=57) "\tstrings.ToLower(_StartNotZeroName[0:12]): StartWithNum,", @@ -1246,7 +1336,8 @@ (string) (len=17) "\treturn string(x)", (string) (len=1) "}", (string) "", - (string) (len=44) "// String implements the Stringer interface.", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", (string) (len=36) "func (x StringEnum) IsValid() bool {", (string) (len=37) "\t_, err := ParseStringEnum(string(x))", (string) (len=18) "\treturn err == nil", diff --git a/generator/.snapshots/TestCustomPrefixExampleFile b/generator/.snapshots/TestCustomPrefixExampleFile index 2406e01e..7af76701 100644 --- a/generator/.snapshots/TestCustomPrefixExampleFile +++ b/generator/.snapshots/TestCustomPrefixExampleFile @@ -1,4 +1,4 @@ -([]string) (len=3971) { +([]string) (len=4062) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -10,11 +10,10 @@ (string) (len=8) "import (", (string) (len=22) "\t\"database/sql/driver\"", (string) (len=16) "\t\"encoding/json\"", + (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strconv\"", (string) (len=10) "\t\"strings\"", - (string) "", - (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -44,6 +43,13 @@ (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=32) "func (x Animal) IsValid() bool {", + (string) (len=23) "\t_, ok := _AnimalMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=37) "var _AnimalValue = map[string]Animal{", (string) (len=55) "\t_AnimalName[0:3]: Custom_prefix_Cat,", (string) (len=55) "\tstrings.ToLower(_AnimalName[0:3]): Custom_prefix_Cat,", @@ -308,6 +314,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Cases) IsValid() bool {", + (string) (len=22) "\t_, ok := _CasesMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _CasesValue = map[string]Cases{", (string) (len=62) "\t_CasesName[0:10]: Custom_prefix_Test_lower,", (string) (len=62) "\tstrings.ToLower(_CasesName[0:10]): Custom_prefix_Test_lower,", @@ -584,6 +597,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Color) IsValid() bool {", + (string) (len=22) "\t_, ok := _ColorMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ColorValue = map[string]Color{", (string) (len=57) "\t_ColorName[0:5]: Custom_prefix_Black,", (string) (len=57) "\tstrings.ToLower(_ColorName[0:5]): Custom_prefix_Black,", @@ -869,6 +889,13 @@ (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=42) "func (x ColorWithComment) IsValid() bool {", + (string) (len=33) "\t_, ok := _ColorWithCommentMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", (string) (len=68) "\t_ColorWithCommentName[0:5]: Custom_prefix_Black,", (string) (len=68) "\tstrings.ToLower(_ColorWithCommentName[0:5]): Custom_prefix_Black,", @@ -1154,6 +1181,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment2) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment2Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", (string) (len=69) "\t_ColorWithComment2Name[0:5]: Custom_prefix_Black,", (string) (len=69) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): Custom_prefix_Black,", @@ -1449,6 +1483,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment3) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment3Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", (string) (len=69) "\t_ColorWithComment3Name[0:5]: Custom_prefix_Black,", (string) (len=69) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): Custom_prefix_Black,", @@ -1752,6 +1793,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment4) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment4Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", (string) (len=69) "\t_ColorWithComment4Name[0:5]: Custom_prefix_Black,", (string) (len=69) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): Custom_prefix_Black,", @@ -2064,6 +2112,13 @@ (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=35) "func (x Enum64bit) IsValid() bool {", + (string) (len=26) "\t_, ok := _Enum64bitMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", (string) (len=63) "\t_Enum64bitName[0:7]: Custom_prefix_Unknown,", (string) (len=63) "\tstrings.ToLower(_Enum64bitName[0:7]): Custom_prefix_Unknown,", @@ -2356,6 +2411,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Model) IsValid() bool {", + (string) (len=22) "\t_, ok := _ModelMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ModelValue = map[string]Model{", (string) (len=58) "\t_ModelName[0:6]: Custom_prefix_Toyota,", (string) (len=58) "\tstrings.ToLower(_ModelName[0:6]): Custom_prefix_Toyota,", @@ -2620,6 +2682,13 @@ (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=34) "func (x NonASCII) IsValid() bool {", + (string) (len=25) "\t_, ok := _NonASCIIMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", (string) (len=67) "\t_NonASCIIName[0:12]: Custom_prefix_Продам,", (string) (len=67) "\tstrings.ToLower(_NonASCIIName[0:12]): Custom_prefix_Продам,", @@ -2896,6 +2965,13 @@ (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x Sanitizing) IsValid() bool {", + (string) (len=27) "\t_, ok := _SanitizingMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", (string) (len=67) "\t_SanitizingName[0:11]: Custom_prefix_TestHyphen,", (string) (len=67) "\tstrings.ToLower(_SanitizingName[0:11]): Custom_prefix_TestHyphen,", @@ -3168,6 +3244,13 @@ (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=30) "func (x Soda) IsValid() bool {", + (string) (len=21) "\t_, ok := _SodaMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=33) "var _SodaValue = map[string]Soda{", (string) (len=54) "\t_SodaName[0:4]: Custom_prefix_Coke,", (string) (len=54) "\tstrings.ToLower(_SodaName[0:4]): Custom_prefix_Coke,", @@ -3429,6 +3512,13 @@ (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=38) "func (x StartNotZero) IsValid() bool {", + (string) (len=29) "\t_, ok := _StartNotZeroMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", (string) (len=71) "\t_StartNotZeroName[0:12]: Custom_prefix_StartWithNum,", (string) (len=71) "\tstrings.ToLower(_StartNotZeroName[0:12]): Custom_prefix_StartWithNum,", @@ -3680,7 +3770,8 @@ (string) (len=17) "\treturn string(x)", (string) (len=1) "}", (string) "", - (string) (len=44) "// String implements the Stringer interface.", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", (string) (len=36) "func (x StringEnum) IsValid() bool {", (string) (len=37) "\t_, err := ParseStringEnum(string(x))", (string) (len=18) "\treturn err == nil", diff --git a/generator/.snapshots/TestExampleFile b/generator/.snapshots/TestExampleFile index 2d71705a..cd0d19eb 100644 --- a/generator/.snapshots/TestExampleFile +++ b/generator/.snapshots/TestExampleFile @@ -1,4 +1,4 @@ -([]string) (len=2329) { +([]string) (len=2420) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -9,10 +9,9 @@ (string) "", (string) (len=8) "import (", (string) (len=22) "\t\"database/sql/driver\"", + (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", - (string) "", - (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -55,6 +54,13 @@ (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=32) "func (x Animal) IsValid() bool {", + (string) (len=23) "\t_, ok := _AnimalMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=37) "var _AnimalValue = map[string]Animal{", (string) (len=47) "\t_AnimalName[0:3]: AnimalCat,", (string) (len=47) "\tstrings.ToLower(_AnimalName[0:3]): AnimalCat,", @@ -205,6 +211,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Cases) IsValid() bool {", + (string) (len=22) "\t_, ok := _CasesMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _CasesValue = map[string]Cases{", (string) (len=53) "\t_CasesName[0:10]: CasesTest_lower,", (string) (len=53) "\tstrings.ToLower(_CasesName[0:10]): CasesTest_lower,", @@ -371,6 +384,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Color) IsValid() bool {", + (string) (len=22) "\t_, ok := _ColorMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ColorValue = map[string]Color{", (string) (len=48) "\t_ColorName[0:5]: ColorBlack,", (string) (len=48) "\tstrings.ToLower(_ColorName[0:5]): ColorBlack,", @@ -546,6 +566,13 @@ (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=42) "func (x ColorWithComment) IsValid() bool {", + (string) (len=33) "\t_, ok := _ColorWithCommentMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", (string) (len=70) "\t_ColorWithCommentName[0:5]: ColorWithCommentBlack,", (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[0:5]): ColorWithCommentBlack,", @@ -721,6 +748,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment2) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment2Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", (string) (len=72) "\t_ColorWithComment2Name[0:5]: ColorWithComment2Black,", (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): ColorWithComment2Black,", @@ -909,6 +943,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment3) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment3Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", (string) (len=72) "\t_ColorWithComment3Name[0:5]: ColorWithComment3Black,", (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): ColorWithComment3Black,", @@ -1104,6 +1145,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment4) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment4Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", (string) (len=72) "\t_ColorWithComment4Name[0:5]: ColorWithComment4Black,", (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): ColorWithComment4Black,", @@ -1314,6 +1362,13 @@ (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=35) "func (x Enum64bit) IsValid() bool {", + (string) (len=26) "\t_, ok := _Enum64bitMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", (string) (len=58) "\t_Enum64bitName[0:7]: Enum64bitUnknown,", (string) (len=58) "\tstrings.ToLower(_Enum64bitName[0:7]): Enum64bitUnknown,", @@ -1492,6 +1547,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Model) IsValid() bool {", + (string) (len=22) "\t_, ok := _ModelMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ModelValue = map[string]Model{", (string) (len=49) "\t_ModelName[0:6]: ModelToyota,", (string) (len=49) "\tstrings.ToLower(_ModelName[0:6]): ModelToyota,", @@ -1642,6 +1704,13 @@ (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=34) "func (x NonASCII) IsValid() bool {", + (string) (len=25) "\t_, ok := _NonASCIIMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", (string) (len=61) "\t_NonASCIIName[0:12]: NonASCIIПродам,", (string) (len=61) "\tstrings.ToLower(_NonASCIIName[0:12]): NonASCIIПродам,", @@ -1808,6 +1877,13 @@ (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x Sanitizing) IsValid() bool {", + (string) (len=27) "\t_, ok := _SanitizingMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", (string) (len=63) "\t_SanitizingName[0:11]: SanitizingTestHyphen,", (string) (len=63) "\tstrings.ToLower(_SanitizingName[0:11]): SanitizingTestHyphen,", @@ -1966,6 +2042,13 @@ (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=30) "func (x Soda) IsValid() bool {", + (string) (len=21) "\t_, ok := _SodaMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=33) "var _SodaValue = map[string]Soda{", (string) (len=44) "\t_SodaName[0:4]: SodaCoke,", (string) (len=44) "\tstrings.ToLower(_SodaName[0:4]): SodaCoke,", @@ -2112,6 +2195,13 @@ (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=38) "func (x StartNotZero) IsValid() bool {", + (string) (len=29) "\t_, ok := _StartNotZeroMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", (string) (len=69) "\t_StartNotZeroName[0:12]: StartNotZeroStartWithNum,", (string) (len=69) "\tstrings.ToLower(_StartNotZeroName[0:12]): StartNotZeroStartWithNum,", @@ -2249,7 +2339,8 @@ (string) (len=17) "\treturn string(x)", (string) (len=1) "}", (string) "", - (string) (len=44) "// String implements the Stringer interface.", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", (string) (len=36) "func (x StringEnum) IsValid() bool {", (string) (len=37) "\t_, err := ParseStringEnum(string(x))", (string) (len=18) "\treturn err == nil", diff --git a/generator/.snapshots/TestExampleFileMoreOptions b/generator/.snapshots/TestExampleFileMoreOptions index cea36139..8dfd9566 100644 --- a/generator/.snapshots/TestExampleFileMoreOptions +++ b/generator/.snapshots/TestExampleFileMoreOptions @@ -1,4 +1,4 @@ -([]string) (len=2525) { +([]string) (len=2616) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -9,10 +9,9 @@ (string) "", (string) (len=8) "import (", (string) (len=22) "\t\"database/sql/driver\"", + (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", - (string) "", - (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -55,6 +54,13 @@ (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=32) "func (x Animal) IsValid() bool {", + (string) (len=23) "\t_, ok := _AnimalMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=37) "var _AnimalValue = map[string]Animal{", (string) (len=47) "\t_AnimalName[0:3]: AnimalCat,", (string) (len=47) "\tstrings.ToLower(_AnimalName[0:3]): AnimalCat,", @@ -219,6 +225,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Cases) IsValid() bool {", + (string) (len=22) "\t_, ok := _CasesMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _CasesValue = map[string]Cases{", (string) (len=53) "\t_CasesName[0:10]: CasesTest_lower,", (string) (len=53) "\tstrings.ToLower(_CasesName[0:10]): CasesTest_lower,", @@ -399,6 +412,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Color) IsValid() bool {", + (string) (len=22) "\t_, ok := _ColorMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ColorValue = map[string]Color{", (string) (len=48) "\t_ColorName[0:5]: ColorBlack,", (string) (len=48) "\tstrings.ToLower(_ColorName[0:5]): ColorBlack,", @@ -588,6 +608,13 @@ (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=42) "func (x ColorWithComment) IsValid() bool {", + (string) (len=33) "\t_, ok := _ColorWithCommentMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", (string) (len=70) "\t_ColorWithCommentName[0:5]: ColorWithCommentBlack,", (string) (len=70) "\tstrings.ToLower(_ColorWithCommentName[0:5]): ColorWithCommentBlack,", @@ -777,6 +804,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment2) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment2Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", (string) (len=72) "\t_ColorWithComment2Name[0:5]: ColorWithComment2Black,", (string) (len=72) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): ColorWithComment2Black,", @@ -979,6 +1013,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment3) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment3Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", (string) (len=72) "\t_ColorWithComment3Name[0:5]: ColorWithComment3Black,", (string) (len=72) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): ColorWithComment3Black,", @@ -1188,6 +1229,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment4) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment4Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", (string) (len=72) "\t_ColorWithComment4Name[0:5]: ColorWithComment4Black,", (string) (len=72) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): ColorWithComment4Black,", @@ -1412,6 +1460,13 @@ (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=35) "func (x Enum64bit) IsValid() bool {", + (string) (len=26) "\t_, ok := _Enum64bitMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", (string) (len=58) "\t_Enum64bitName[0:7]: Enum64bitUnknown,", (string) (len=58) "\tstrings.ToLower(_Enum64bitName[0:7]): Enum64bitUnknown,", @@ -1604,6 +1659,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Model) IsValid() bool {", + (string) (len=22) "\t_, ok := _ModelMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ModelValue = map[string]Model{", (string) (len=49) "\t_ModelName[0:6]: ModelToyota,", (string) (len=49) "\tstrings.ToLower(_ModelName[0:6]): ModelToyota,", @@ -1768,6 +1830,13 @@ (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=34) "func (x NonASCII) IsValid() bool {", + (string) (len=25) "\t_, ok := _NonASCIIMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", (string) (len=61) "\t_NonASCIIName[0:12]: NonASCIIПродам,", (string) (len=61) "\tstrings.ToLower(_NonASCIIName[0:12]): NonASCIIПродам,", @@ -1948,6 +2017,13 @@ (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x Sanitizing) IsValid() bool {", + (string) (len=27) "\t_, ok := _SanitizingMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", (string) (len=63) "\t_SanitizingName[0:11]: SanitizingTestHyphen,", (string) (len=63) "\tstrings.ToLower(_SanitizingName[0:11]): SanitizingTestHyphen,", @@ -2120,6 +2196,13 @@ (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=30) "func (x Soda) IsValid() bool {", + (string) (len=21) "\t_, ok := _SodaMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=33) "var _SodaValue = map[string]Soda{", (string) (len=44) "\t_SodaName[0:4]: SodaCoke,", (string) (len=44) "\tstrings.ToLower(_SodaName[0:4]): SodaCoke,", @@ -2280,6 +2363,13 @@ (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=38) "func (x StartNotZero) IsValid() bool {", + (string) (len=29) "\t_, ok := _StartNotZeroMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", (string) (len=69) "\t_StartNotZeroName[0:12]: StartNotZeroStartWithNum,", (string) (len=69) "\tstrings.ToLower(_StartNotZeroName[0:12]): StartNotZeroStartWithNum,", @@ -2431,7 +2521,8 @@ (string) (len=17) "\treturn string(x)", (string) (len=1) "}", (string) "", - (string) (len=44) "// String implements the Stringer interface.", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", (string) (len=36) "func (x StringEnum) IsValid() bool {", (string) (len=37) "\t_, err := ParseStringEnum(string(x))", (string) (len=18) "\treturn err == nil", diff --git a/generator/.snapshots/TestNoPrefixExampleFile b/generator/.snapshots/TestNoPrefixExampleFile index cc893268..4df6e5c1 100644 --- a/generator/.snapshots/TestNoPrefixExampleFile +++ b/generator/.snapshots/TestNoPrefixExampleFile @@ -1,4 +1,4 @@ -([]string) (len=1299) { +([]string) (len=1390) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -8,10 +8,9 @@ (string) (len=17) "package generator", (string) "", (string) (len=8) "import (", + (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", - (string) "", - (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -41,6 +40,13 @@ (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=32) "func (x Animal) IsValid() bool {", + (string) (len=23) "\t_, ok := _AnimalMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=37) "var _AnimalValue = map[string]Animal{", (string) (len=41) "\t_AnimalName[0:3]: Cat,", (string) (len=41) "\tstrings.ToLower(_AnimalName[0:3]): Cat,", @@ -118,6 +124,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Cases) IsValid() bool {", + (string) (len=22) "\t_, ok := _CasesMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _CasesValue = map[string]Cases{", (string) (len=48) "\t_CasesName[0:10]: Test_lower,", (string) (len=48) "\tstrings.ToLower(_CasesName[0:10]): Test_lower,", @@ -207,6 +220,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Color) IsValid() bool {", + (string) (len=22) "\t_, ok := _ColorMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ColorValue = map[string]Color{", (string) (len=43) "\t_ColorName[0:5]: Black,", (string) (len=43) "\tstrings.ToLower(_ColorName[0:5]): Black,", @@ -305,6 +325,13 @@ (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=42) "func (x ColorWithComment) IsValid() bool {", + (string) (len=33) "\t_, ok := _ColorWithCommentMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", (string) (len=54) "\t_ColorWithCommentName[0:5]: Black,", (string) (len=54) "\tstrings.ToLower(_ColorWithCommentName[0:5]): Black,", @@ -403,6 +430,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment2) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment2Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", (string) (len=55) "\t_ColorWithComment2Name[0:5]: Black,", (string) (len=55) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): Black,", @@ -511,6 +545,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment3) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment3Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", (string) (len=55) "\t_ColorWithComment3Name[0:5]: Black,", (string) (len=55) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): Black,", @@ -627,6 +668,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment4) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment4Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", (string) (len=55) "\t_ColorWithComment4Name[0:5]: Black,", (string) (len=55) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): Black,", @@ -752,6 +800,13 @@ (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=35) "func (x Enum64bit) IsValid() bool {", + (string) (len=26) "\t_, ok := _Enum64bitMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", (string) (len=49) "\t_Enum64bitName[0:7]: Unknown,", (string) (len=49) "\tstrings.ToLower(_Enum64bitName[0:7]): Unknown,", @@ -857,6 +912,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Model) IsValid() bool {", + (string) (len=22) "\t_, ok := _ModelMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ModelValue = map[string]Model{", (string) (len=44) "\t_ModelName[0:6]: Toyota,", (string) (len=44) "\tstrings.ToLower(_ModelName[0:6]): Toyota,", @@ -934,6 +996,13 @@ (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=34) "func (x NonASCII) IsValid() bool {", + (string) (len=25) "\t_, ok := _NonASCIIMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", (string) (len=53) "\t_NonASCIIName[0:12]: Продам,", (string) (len=53) "\tstrings.ToLower(_NonASCIIName[0:12]): Продам,", @@ -1023,6 +1092,13 @@ (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x Sanitizing) IsValid() bool {", + (string) (len=27) "\t_, ok := _SanitizingMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", (string) (len=53) "\t_SanitizingName[0:11]: TestHyphen,", (string) (len=53) "\tstrings.ToLower(_SanitizingName[0:11]): TestHyphen,", @@ -1108,6 +1184,13 @@ (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=30) "func (x Soda) IsValid() bool {", + (string) (len=21) "\t_, ok := _SodaMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=33) "var _SodaValue = map[string]Soda{", (string) (len=40) "\t_SodaName[0:4]: Coke,", (string) (len=40) "\tstrings.ToLower(_SodaName[0:4]): Coke,", @@ -1182,6 +1265,13 @@ (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=38) "func (x StartNotZero) IsValid() bool {", + (string) (len=29) "\t_, ok := _StartNotZeroMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", (string) (len=57) "\t_StartNotZeroName[0:12]: StartWithNum,", (string) (len=57) "\tstrings.ToLower(_StartNotZeroName[0:12]): StartWithNum,", @@ -1246,7 +1336,8 @@ (string) (len=17) "\treturn string(x)", (string) (len=1) "}", (string) "", - (string) (len=44) "// String implements the Stringer interface.", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", (string) (len=36) "func (x StringEnum) IsValid() bool {", (string) (len=37) "\t_, err := ParseStringEnum(string(x))", (string) (len=18) "\treturn err == nil", diff --git a/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel b/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel index e7101c33..82a21133 100644 --- a/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel +++ b/generator/.snapshots/TestNoPrefixExampleFileWithSnakeToCamel @@ -1,4 +1,4 @@ -([]string) (len=1299) { +([]string) (len=1390) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -8,10 +8,9 @@ (string) (len=17) "package generator", (string) "", (string) (len=8) "import (", + (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", - (string) "", - (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -41,6 +40,13 @@ (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=32) "func (x Animal) IsValid() bool {", + (string) (len=23) "\t_, ok := _AnimalMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=37) "var _AnimalValue = map[string]Animal{", (string) (len=41) "\t_AnimalName[0:3]: Cat,", (string) (len=41) "\tstrings.ToLower(_AnimalName[0:3]): Cat,", @@ -118,6 +124,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Cases) IsValid() bool {", + (string) (len=22) "\t_, ok := _CasesMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _CasesValue = map[string]Cases{", (string) (len=47) "\t_CasesName[0:10]: TestLower,", (string) (len=47) "\tstrings.ToLower(_CasesName[0:10]): TestLower,", @@ -207,6 +220,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Color) IsValid() bool {", + (string) (len=22) "\t_, ok := _ColorMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ColorValue = map[string]Color{", (string) (len=43) "\t_ColorName[0:5]: Black,", (string) (len=43) "\tstrings.ToLower(_ColorName[0:5]): Black,", @@ -305,6 +325,13 @@ (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=42) "func (x ColorWithComment) IsValid() bool {", + (string) (len=33) "\t_, ok := _ColorWithCommentMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", (string) (len=54) "\t_ColorWithCommentName[0:5]: Black,", (string) (len=54) "\tstrings.ToLower(_ColorWithCommentName[0:5]): Black,", @@ -403,6 +430,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment2) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment2Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", (string) (len=55) "\t_ColorWithComment2Name[0:5]: Black,", (string) (len=55) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): Black,", @@ -511,6 +545,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment3) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment3Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", (string) (len=55) "\t_ColorWithComment3Name[0:5]: Black,", (string) (len=55) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): Black,", @@ -627,6 +668,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment4) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment4Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", (string) (len=55) "\t_ColorWithComment4Name[0:5]: Black,", (string) (len=55) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): Black,", @@ -752,6 +800,13 @@ (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=35) "func (x Enum64bit) IsValid() bool {", + (string) (len=26) "\t_, ok := _Enum64bitMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", (string) (len=49) "\t_Enum64bitName[0:7]: Unknown,", (string) (len=49) "\tstrings.ToLower(_Enum64bitName[0:7]): Unknown,", @@ -857,6 +912,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Model) IsValid() bool {", + (string) (len=22) "\t_, ok := _ModelMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ModelValue = map[string]Model{", (string) (len=44) "\t_ModelName[0:6]: Toyota,", (string) (len=44) "\tstrings.ToLower(_ModelName[0:6]): Toyota,", @@ -934,6 +996,13 @@ (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=34) "func (x NonASCII) IsValid() bool {", + (string) (len=25) "\t_, ok := _NonASCIIMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", (string) (len=53) "\t_NonASCIIName[0:12]: Продам,", (string) (len=53) "\tstrings.ToLower(_NonASCIIName[0:12]): Продам,", @@ -1023,6 +1092,13 @@ (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x Sanitizing) IsValid() bool {", + (string) (len=27) "\t_, ok := _SanitizingMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", (string) (len=53) "\t_SanitizingName[0:11]: TestHyphen,", (string) (len=53) "\tstrings.ToLower(_SanitizingName[0:11]): TestHyphen,", @@ -1108,6 +1184,13 @@ (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=30) "func (x Soda) IsValid() bool {", + (string) (len=21) "\t_, ok := _SodaMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=33) "var _SodaValue = map[string]Soda{", (string) (len=40) "\t_SodaName[0:4]: Coke,", (string) (len=40) "\tstrings.ToLower(_SodaName[0:4]): Coke,", @@ -1182,6 +1265,13 @@ (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=38) "func (x StartNotZero) IsValid() bool {", + (string) (len=29) "\t_, ok := _StartNotZeroMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", (string) (len=57) "\t_StartNotZeroName[0:12]: StartWithNum,", (string) (len=57) "\tstrings.ToLower(_StartNotZeroName[0:12]): StartWithNum,", @@ -1246,7 +1336,8 @@ (string) (len=17) "\treturn string(x)", (string) (len=1) "}", (string) "", - (string) (len=44) "// String implements the Stringer interface.", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", (string) (len=36) "func (x StringEnum) IsValid() bool {", (string) (len=37) "\t_, err := ParseStringEnum(string(x))", (string) (len=18) "\treturn err == nil", diff --git a/generator/.snapshots/TestReplacePrefixExampleFile b/generator/.snapshots/TestReplacePrefixExampleFile index e6f3a13e..f8228029 100644 --- a/generator/.snapshots/TestReplacePrefixExampleFile +++ b/generator/.snapshots/TestReplacePrefixExampleFile @@ -1,4 +1,4 @@ -([]string) (len=1299) { +([]string) (len=1390) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -8,10 +8,9 @@ (string) (len=17) "package generator", (string) "", (string) (len=8) "import (", + (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strings\"", - (string) "", - (string) (len=24) "\t\"github.com/pkg/errors\"", (string) (len=1) ")", (string) "", (string) (len=7) "const (", @@ -41,6 +40,13 @@ (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=32) "func (x Animal) IsValid() bool {", + (string) (len=23) "\t_, ok := _AnimalMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=37) "var _AnimalValue = map[string]Animal{", (string) (len=50) "\t_AnimalName[0:3]: MyPrefix_Cat,", (string) (len=50) "\tstrings.ToLower(_AnimalName[0:3]): MyPrefix_Cat,", @@ -118,6 +124,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Cases) IsValid() bool {", + (string) (len=22) "\t_, ok := _CasesMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _CasesValue = map[string]Cases{", (string) (len=57) "\t_CasesName[0:10]: MyPrefix_Test_lower,", (string) (len=57) "\tstrings.ToLower(_CasesName[0:10]): MyPrefix_Test_lower,", @@ -207,6 +220,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Color) IsValid() bool {", + (string) (len=22) "\t_, ok := _ColorMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ColorValue = map[string]Color{", (string) (len=52) "\t_ColorName[0:5]: MyPrefix_Black,", (string) (len=52) "\tstrings.ToLower(_ColorName[0:5]): MyPrefix_Black,", @@ -305,6 +325,13 @@ (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=42) "func (x ColorWithComment) IsValid() bool {", + (string) (len=33) "\t_, ok := _ColorWithCommentMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", (string) (len=63) "\t_ColorWithCommentName[0:5]: MyPrefix_Black,", (string) (len=63) "\tstrings.ToLower(_ColorWithCommentName[0:5]): MyPrefix_Black,", @@ -403,6 +430,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment2) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment2Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", (string) (len=64) "\t_ColorWithComment2Name[0:5]: MyPrefix_Black,", (string) (len=64) "\tstrings.ToLower(_ColorWithComment2Name[0:5]): MyPrefix_Black,", @@ -511,6 +545,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment3) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment3Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", (string) (len=64) "\t_ColorWithComment3Name[0:5]: MyPrefix_Black,", (string) (len=64) "\tstrings.ToLower(_ColorWithComment3Name[0:5]): MyPrefix_Black,", @@ -627,6 +668,13 @@ (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment4) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment4Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", (string) (len=64) "\t_ColorWithComment4Name[0:5]: MyPrefix_Black,", (string) (len=64) "\tstrings.ToLower(_ColorWithComment4Name[0:5]): MyPrefix_Black,", @@ -752,6 +800,13 @@ (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=35) "func (x Enum64bit) IsValid() bool {", + (string) (len=26) "\t_, ok := _Enum64bitMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", (string) (len=58) "\t_Enum64bitName[0:7]: MyPrefix_Unknown,", (string) (len=58) "\tstrings.ToLower(_Enum64bitName[0:7]): MyPrefix_Unknown,", @@ -857,6 +912,13 @@ (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Model) IsValid() bool {", + (string) (len=22) "\t_, ok := _ModelMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=35) "var _ModelValue = map[string]Model{", (string) (len=53) "\t_ModelName[0:6]: MyPrefix_Toyota,", (string) (len=53) "\tstrings.ToLower(_ModelName[0:6]): MyPrefix_Toyota,", @@ -934,6 +996,13 @@ (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=34) "func (x NonASCII) IsValid() bool {", + (string) (len=25) "\t_, ok := _NonASCIIMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", (string) (len=62) "\t_NonASCIIName[0:12]: MyPrefix_Продам,", (string) (len=62) "\tstrings.ToLower(_NonASCIIName[0:12]): MyPrefix_Продам,", @@ -1023,6 +1092,13 @@ (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x Sanitizing) IsValid() bool {", + (string) (len=27) "\t_, ok := _SanitizingMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", (string) (len=62) "\t_SanitizingName[0:11]: MyPrefix_TestHyphen,", (string) (len=62) "\tstrings.ToLower(_SanitizingName[0:11]): MyPrefix_TestHyphen,", @@ -1108,6 +1184,13 @@ (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=30) "func (x Soda) IsValid() bool {", + (string) (len=21) "\t_, ok := _SodaMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=33) "var _SodaValue = map[string]Soda{", (string) (len=49) "\t_SodaName[0:4]: MyPrefix_Coke,", (string) (len=49) "\tstrings.ToLower(_SodaName[0:4]): MyPrefix_Coke,", @@ -1182,6 +1265,13 @@ (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", (string) (len=1) "}", (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=38) "func (x StartNotZero) IsValid() bool {", + (string) (len=29) "\t_, ok := _StartNotZeroMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", (string) (len=66) "\t_StartNotZeroName[0:12]: MyPrefix_StartWithNum,", (string) (len=66) "\tstrings.ToLower(_StartNotZeroName[0:12]): MyPrefix_StartWithNum,", @@ -1246,7 +1336,8 @@ (string) (len=17) "\treturn string(x)", (string) (len=1) "}", (string) "", - (string) (len=44) "// String implements the Stringer interface.", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", (string) (len=36) "func (x StringEnum) IsValid() bool {", (string) (len=37) "\t_, err := ParseStringEnum(string(x))", (string) (len=18) "\treturn err == nil", diff --git a/generator/enum.tmpl b/generator/enum.tmpl index 45ef698b..6c605085 100644 --- a/generator/enum.tmpl +++ b/generator/enum.tmpl @@ -46,6 +46,13 @@ func (x {{.enum.Name}}) String() string { return fmt.Sprintf("{{.enum.Name}}(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x {{.enum.Name}}) IsValid() bool { + _, ok := _{{.enum.Name}}Map[x] + return ok +} + var _{{.enum.Name}}Value = {{ unmapify .enum .lowercase }} // Parse{{.enum.Name}} attempts to convert a string to a {{.enum.Name}}. diff --git a/generator/enum_string.tmpl b/generator/enum_string.tmpl index 299fc0e8..41f16231 100644 --- a/generator/enum_string.tmpl +++ b/generator/enum_string.tmpl @@ -46,7 +46,8 @@ func (x {{.enum.Name}}) String() string { return string(x) } -// String implements the Stringer interface. +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values func (x {{.enum.Name}}) IsValid() bool { _, err := Parse{{.enum.Name}}(string(x)) return err == nil diff --git a/generator/generator.go b/generator/generator.go index 975d1e0d..aff464c9 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -2,6 +2,7 @@ package generator import ( "bytes" + "errors" "fmt" "go/ast" "go/parser" @@ -13,8 +14,7 @@ import ( "text/template" "unicode" - "github.com/Masterminds/sprig" - "github.com/pkg/errors" + "github.com/Masterminds/sprig/v3" "golang.org/x/text/cases" "golang.org/x/text/language" "golang.org/x/tools/imports" @@ -275,7 +275,7 @@ func (g *Generator) Generate(f *ast.File) ([]byte, error) { "builtBy": g.BuiltBy, }) if err != nil { - return nil, errors.WithMessage(err, "Failed writing header") + return nil, fmt.Errorf("failed writing header: %w", err) } // Make the output more consistent by iterating over sorted keys of map @@ -323,13 +323,13 @@ func (g *Generator) Generate(f *ast.File) ([]byte, error) { err = g.t.ExecuteTemplate(vBuff, templateName, data) if err != nil { - return vBuff.Bytes(), errors.WithMessage(err, fmt.Sprintf("Failed writing enum data for enum: %q", name)) + return vBuff.Bytes(), fmt.Errorf("failed writing enum data for enum: %q: %w", name, err) } for _, userTemplateName := range g.userTemplateNames { err = g.t.ExecuteTemplate(vBuff, userTemplateName, data) if err != nil { - return vBuff.Bytes(), errors.WithMessage(err, fmt.Sprintf("Failed writing enum data for enum: %q, template: %v", name, userTemplateName)) + return vBuff.Bytes(), fmt.Errorf("failed writing enum data for enum: %q, template: %v: %w", name, userTemplateName, err) } } } @@ -363,7 +363,7 @@ func (g *Generator) parseFile(fileName string) (*ast.File, error) { // parseEnum looks for the ENUM(x,y,z) formatted documentation from the type definition func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { if ts.Doc == nil { - return nil, errors.New("No Doc on Enum") + return nil, errors.New("no doc on enum") } enum := &Enum{} @@ -428,7 +428,7 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { } else if unsigned { newData, err := strconv.ParseUint(dataVal, 10, 64) if err != nil { - err = errors.Wrapf(err, "failed parsing the data part of enum value '%s'", value) + err = fmt.Errorf("failed parsing the data part of enum value '%s': %w", value, err) fmt.Println(err) return nil, err } @@ -436,7 +436,7 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { } else { newData, err := strconv.ParseInt(dataVal, 10, 64) if err != nil { - err = errors.Wrapf(err, "failed parsing the data part of enum value '%s'", value) + err = fmt.Errorf("failed parsing the data part of enum value '%s': %w", value, err) fmt.Println(err) return nil, err } diff --git a/generator/generator_1.18_test.go b/generator/generator_1.18_test.go index 8c8a649a..d0945434 100644 --- a/generator/generator_1.18_test.go +++ b/generator/generator_1.18_test.go @@ -9,17 +9,15 @@ import ( "strings" "testing" - "github.com/bradleyjkemp/cupaloy" + "github.com/bradleyjkemp/cupaloy/v2" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) -var ( - testExampleFiles = map[string]string{ - "og": `example_test.go`, - "1.18": `example_1.18_test.go`, - } -) +var testExampleFiles = map[string]string{ + "og": `example_test.go`, + "1.18": `example_1.18_test.go`, +} // TestNoStructInputFile func Test118NoStructFile(t *testing.T) { diff --git a/generator/generator_test.go b/generator/generator_test.go index 50e3b002..3f9750b3 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -1,13 +1,13 @@ package generator import ( + "errors" "fmt" "go/parser" "strings" "testing" - "github.com/bradleyjkemp/cupaloy" - "github.com/pkg/errors" + "github.com/bradleyjkemp/cupaloy/v2" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) diff --git a/go.mod b/go.mod index 9822ad22..b18efabc 100644 --- a/go.mod +++ b/go.mod @@ -1,23 +1,23 @@ module github.com/abice/go-enum -go 1.18 +go 1.20 require ( - github.com/Masterminds/sprig v2.22.0+incompatible - github.com/bradleyjkemp/cupaloy v2.3.0+incompatible + github.com/Masterminds/sprig/v3 v3.2.3 + github.com/bradleyjkemp/cupaloy/v2 v2.8.0 github.com/golang/mock v1.6.0 github.com/labstack/gommon v0.4.0 github.com/mattn/goveralls v0.0.11 - github.com/pkg/errors v0.9.1 - github.com/stretchr/testify v1.8.1 - github.com/urfave/cli/v2 v2.24.1 - golang.org/x/text v0.6.0 - golang.org/x/tools v0.5.0 + github.com/stretchr/testify v1.8.2 + github.com/urfave/cli/v2 v2.25.1 + golang.org/x/text v0.8.0 + golang.org/x/tools v0.7.0 + golang.org/x/tools/cmd/cover v0.1.0-deprecated ) require ( github.com/Masterminds/goutils v1.1.1 // indirect - github.com/Masterminds/semver v1.5.0 // indirect + github.com/Masterminds/semver/v3 v3.2.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/google/uuid v1.3.0 // indirect @@ -30,11 +30,13 @@ require ( github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/shopspring/decimal v1.2.0 // indirect + github.com/spf13/cast v1.3.1 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - golang.org/x/crypto v0.1.0 // indirect - golang.org/x/mod v0.7.0 // indirect - golang.org/x/sys v0.4.0 // indirect + golang.org/x/crypto v0.3.0 // indirect + golang.org/x/mod v0.9.0 // indirect + golang.org/x/sys v0.6.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 8980077c..4398f4dc 100644 --- a/go.sum +++ b/go.sum @@ -1,11 +1,11 @@ github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= -github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60= -github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= -github.com/bradleyjkemp/cupaloy v2.3.0+incompatible h1:UafIjBvWQmS9i/xRg+CamMrnLTKNzo+bdmT/oH34c2Y= -github.com/bradleyjkemp/cupaloy v2.3.0+incompatible/go.mod h1:Au1Xw1sgaJ5iSFktEhYsS0dbQiS1B0/XMXl+42y9Ilk= +github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g= +github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= +github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= +github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= +github.com/bradleyjkemp/cupaloy/v2 v2.8.0 h1:any4BmKE+jGIaMpnU8YgH/I2LPiLBufr6oMMlVBbn9M= +github.com/bradleyjkemp/cupaloy/v2 v2.8.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1lps46Enkdqw6aRX0= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -14,10 +14,12 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4= github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -37,75 +39,103 @@ github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peK github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/goveralls v0.0.11 h1:eJXea6R6IFlL1QMKNMzDvvHv/hwGrnvyig4N+0+XiMM= github.com/mattn/goveralls v0.0.11/go.mod h1:gU8SyhNswsJKchEV93xRQxX6X3Ei4PJdQk/6ZHvrvRk= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/urfave/cli/v2 v2.24.1 h1:/QYYr7g0EhwXEML8jO+8OYt5trPnLHS0p3mrgExJ5NU= -github.com/urfave/cli/v2 v2.24.1/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/urfave/cli/v2 v2.25.1 h1:zw8dSP7ghX0Gmm8vugrs6q9Ku0wzweqPyshy+syu9Gw= +github.com/urfave/cli/v2 v2.25.1/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.3.0 h1:a06MkbcxBrEFc0w0QIZWXrH/9cCX6KJyWbBOIwAn+7A= +golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.5.0 h1:+bSpV5HIeWkuvgaMfI3UmKRThoTA5ODJTUd8T17NO+4= -golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools/cmd/cover v0.1.0-deprecated h1:Rwy+mWYz6loAF+LnG1jHG/JWMHRMMC2/1XX3Ejkx9lA= +golang.org/x/tools/cmd/cover v0.1.0-deprecated/go.mod h1:hMDiIvlpN1NoVgmjLjUJE9tMHyxHjFX7RuQ+rW12mSA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From c76d0d63d5d5b640bd6d8a4a6de71d0e9ea70262 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Sun, 26 Mar 2023 13:52:47 -0700 Subject: [PATCH 53/91] fix release (#184) --- .github/workflows/release.yml | 2 +- .goreleaser.yml | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5b30e16c..d36ccdc1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -41,6 +41,6 @@ jobs: # either 'goreleaser' (default) or 'goreleaser-pro' distribution: goreleaser version: latest - args: release --rm-dist + args: release --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.goreleaser.yml b/.goreleaser.yml index 62084815..f307945d 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -18,13 +18,12 @@ checksum: archives: # Distribute just the binaries by default - format: binary - replacements: - darwin: Darwin - linux: Linux - windows: Windows - 386: i386 - amd64: x86_64 - name_template: "{{ .Binary }}_{{ .Os }}_{{ .Arch }}" + name_template: >- + {{ .ProjectName }}_ + {{- title .Os }}_ + {{- if eq .Arch "amd64" }}x86_64 + {{- else if eq .Arch "386" }}i386 + {{- else }}{{ .Arch }}{{ end }} snapshot: name_template: "{{ incpatch .Version }}-next" From 97611fddaa414f53713597918c5e954646cb8623 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Sun, 26 Mar 2023 14:37:20 -0700 Subject: [PATCH 54/91] test releases (#185) --- .github/workflows/release.yml | 12 +++------- .github/workflows/release_check.yml | 35 +++++++++++++++++++++++++++++ .goreleaser.yml | 6 ----- 3 files changed, 38 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/release_check.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d36ccdc1..93720157 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,15 +17,9 @@ jobs: - name: Set up Go uses: actions/setup-go@v4 with: - go-version: 1.20 - - - name: Cache Go modules - uses: actions/cache@v3 - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- + go-version: ">=1.20.2" + - name: Ensure Go + run: go version - name: Install GoReleaser uses: goreleaser/goreleaser-action@v4 diff --git a/.github/workflows/release_check.yml b/.github/workflows/release_check.yml new file mode 100644 index 00000000..652931ba --- /dev/null +++ b/.github/workflows/release_check.yml @@ -0,0 +1,35 @@ +name: goreleaser + +on: + push: {} + +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: ">=1.20.2" + - name: Ensure Go + run: go version + + - name: Install GoReleaser + uses: goreleaser/goreleaser-action@v4 + with: + install-only: true + - name: Show GoReleaser version + run: goreleaser -v + + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v4 + with: + # either 'goreleaser' (default) or 'goreleaser-pro' + distribution: goreleaser + version: latest + args: release --clean --snapshot diff --git a/.goreleaser.yml b/.goreleaser.yml index f307945d..1c2fc125 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -1,9 +1,3 @@ -before: - hooks: - # You may remove this if you don't use go modules. - - go mod tidy - # you may remove this if you don't need go generate - - go generate ./generator builds: - env: - CGO_ENABLED=0 From f8fd3fd9e15e01f1654871d8ee16e33290b9cc6b Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Tue, 23 May 2023 17:31:58 -0700 Subject: [PATCH 55/91] change to examples directory and add build tags (#194) --- Makefile | 10 ++--- README.md | 44 +++++++++++-------- _example/globs/gen.go | 3 -- {_example => example}/animal.go | 5 ++- {_example => example}/animal_enum.go | 3 ++ {_example => example}/animal_test.go | 3 ++ {_example => example}/color.go | 5 ++- {_example => example}/color_enum.go | 3 ++ {_example => example}/color_test.go | 5 ++- {_example => example}/commented.go | 2 +- {_example => example}/commented_enum.go | 3 ++ {_example => example}/commented_test.go | 3 ++ {_example => example}/custom_prefix.go | 2 +- {_example => example}/custom_prefix_enum.go | 3 ++ {_example => example}/custom_prefix_test.go | 3 ++ {_example => example}/enum_32_bit.go | 2 +- {_example => example}/enum_32_bit_enum.go | 3 ++ {_example => example}/enum_32_bit_test.go | 5 ++- {_example => example}/enum_64_bit.go | 2 +- {_example => example}/enum_64_bit_enum.go | 3 ++ {_example => example}/enum_64_bit_test.go | 5 ++- {_example => example}/example.go | 2 +- {_example => example}/example_enum.go | 3 ++ {_example => example}/example_test.go | 8 ++-- {_example => example}/force_lower.go | 2 +- {_example => example}/force_lower_enum.go | 3 ++ {_example => example}/force_lower_test.go | 5 ++- example/globs/gen.go | 6 +++ {_example => example}/globs/letter.go | 8 +++- {_example => example}/globs/letter_enum.go | 15 ++++++- {_example => example}/globs/number.go | 8 +++- {_example => example}/globs/number_enum.go | 15 ++++++- {_example => example}/go_enum_enum_test.go | 0 {_example => example}/go_enum_test.go | 2 + {_example => example}/negative.go | 2 +- {_example => example}/negative_enum.go | 3 ++ {_example => example}/negative_test.go | 7 ++- {_example => example}/replace_prefix.go | 2 +- {_example => example}/replace_prefix_enum.go | 3 ++ {_example => example}/replace_prefix_int.go | 2 +- .../replace_prefix_int_enum.go | 3 ++ {_example => example}/sql.go | 2 +- {_example => example}/sql_1_11_test.go | 7 ++- {_example => example}/sql_enum.go | 3 ++ {_example => example}/sql_int.go | 2 +- {_example => example}/sql_int_enum.go | 3 ++ {_example => example}/sql_int_enum_test.go | 9 ++-- {_example => example}/sql_mock_test.go | 0 {_example => example}/sql_str.go | 2 +- {_example => example}/sql_str_enum.go | 3 ++ {_example => example}/sql_str_enum_test.go | 9 ++-- {_example => example}/sql_str_int.go | 2 +- {_example => example}/sql_str_int_enum.go | 3 ++ .../sql_str_int_enum_test.go | 9 ++-- {_example => example}/sql_test.go | 7 ++- {_example => example}/strings_only.go | 2 +- {_example => example}/strings_only_enum.go | 3 ++ {_example => example}/strings_only_test.go | 9 ++-- {_example => example}/user_globbed.tmpl | 0 {_example => example}/user_globbed2.tmpl | 0 {_example => example}/user_template.go | 2 +- {_example => example}/user_template.tmpl | 0 {_example => example}/user_template_enum.go | 3 ++ {_example => example}/user_template_test.go | 3 ++ generator/enum.tmpl | 4 ++ generator/generator.go | 8 ++++ generator/generator_1.18_test.go | 2 +- generator/generator_test.go | 2 +- go.mod | 2 +- main.go | 9 ++++ 70 files changed, 229 insertions(+), 97 deletions(-) delete mode 100644 _example/globs/gen.go rename {_example => example}/animal.go (51%) rename {_example => example}/animal_enum.go (97%) rename {_example => example}/animal_test.go (98%) rename {_example => example}/color.go (85%) rename {_example => example}/color_enum.go (99%) rename {_example => example}/color_test.go (99%) rename {_example => example}/commented.go (87%) rename {_example => example}/commented_enum.go (99%) rename {_example => example}/commented_test.go (99%) rename {_example => example}/custom_prefix.go (63%) rename {_example => example}/custom_prefix_enum.go (97%) rename {_example => example}/custom_prefix_test.go (98%) rename {_example => example}/enum_32_bit.go (85%) rename {_example => example}/enum_32_bit_enum.go (98%) rename {_example => example}/enum_32_bit_test.go (95%) rename {_example => example}/enum_64_bit.go (88%) rename {_example => example}/enum_64_bit_enum.go (99%) rename {_example => example}/enum_64_bit_test.go (95%) rename {_example => example}/example.go (94%) rename {_example => example}/example_enum.go (99%) rename {_example => example}/example_test.go (99%) rename {_example => example}/force_lower.go (60%) rename {_example => example}/force_lower_enum.go (97%) rename {_example => example}/force_lower_test.go (95%) create mode 100644 example/globs/gen.go rename {_example => example}/globs/letter.go (67%) rename {_example => example}/globs/letter_enum.go (90%) rename {_example => example}/globs/number.go (58%) rename {_example => example}/globs/number_enum.go (82%) rename {_example => example}/go_enum_enum_test.go (100%) rename {_example => example}/go_enum_test.go (98%) rename {_example => example}/negative.go (73%) rename {_example => example}/negative_enum.go (99%) rename {_example => example}/negative_test.go (98%) rename {_example => example}/replace_prefix.go (84%) rename {_example => example}/replace_prefix_enum.go (98%) rename {_example => example}/replace_prefix_int.go (84%) rename {_example => example}/replace_prefix_int_enum.go (98%) rename {_example => example}/sql.go (79%) rename {_example => example}/sql_1_11_test.go (99%) rename {_example => example}/sql_enum.go (99%) rename {_example => example}/sql_int.go (57%) rename {_example => example}/sql_int_enum.go (99%) rename {_example => example}/sql_int_enum_test.go (99%) rename {_example => example}/sql_mock_test.go (100%) rename {_example => example}/sql_str.go (58%) rename {_example => example}/sql_str_enum.go (99%) rename {_example => example}/sql_str_enum_test.go (99%) rename {_example => example}/sql_str_int.go (92%) rename {_example => example}/sql_str_int_enum.go (99%) rename {_example => example}/sql_str_int_enum_test.go (99%) rename {_example => example}/sql_test.go (99%) rename {_example => example}/strings_only.go (68%) rename {_example => example}/strings_only_enum.go (99%) rename {_example => example}/strings_only_test.go (99%) rename {_example => example}/user_globbed.tmpl (100%) rename {_example => example}/user_globbed2.tmpl (100%) rename {_example => example}/user_template.go (91%) rename {_example => example}/user_template.tmpl (100%) rename {_example => example}/user_template_enum.go (97%) rename {_example => example}/user_template_test.go (93%) diff --git a/Makefile b/Makefile index 8506aab4..5074ad5d 100644 --- a/Makefile +++ b/Makefile @@ -35,7 +35,7 @@ MOCKGEN=bin/mockgen deps: $(MOCKGEN) deps: $(GOIMPORTS) -PACKAGES='./generator' './_example' +PACKAGES='./generator' './example' .PHONY: all all: build fmt test example cover install @@ -50,7 +50,7 @@ fmt: test: gen-test generate $(GO) test -v -race -coverprofile=coverage.out ./... - $(GO) test -v -race ./_example + $(GO) test -v -race --tags=example ./example cover: gen-test test $(GO) tool cover -html=coverage.out -o coverage.html @@ -75,10 +75,10 @@ assert-no-changes: .PHONY: generate generate: - $(GO) generate $(PACKAGES) + $(GO) generate --tags=example $(PACKAGES) gen-test: build - $(GO) generate $(PACKAGES) + $(GO) generate --tags=example $(PACKAGES) install: $(GO) install @@ -87,7 +87,7 @@ phony: clean tc build .PHONY: example example: - $(GO) generate ./_example/... + $(GO) generate ./example/... bin/goimports: go.sum $(call goinstall,golang.org/x/tools/cmd/goimports) diff --git a/README.md b/README.md index d7cda7e8..d6b1f04d 100644 --- a/README.md +++ b/README.md @@ -139,26 +139,32 @@ USAGE: go-enum [global options] [arguments...] VERSION: - x.y.z + example GLOBAL OPTIONS: - --file value, -f value The file(s) to generate enums. Use more than one flag for more files. - --noprefix Prevents the constants generated from having the Enum as a prefix. (default: false) - --lower Adds lowercase variants of the enum strings for lookup. (default: false) - --nocase Adds case insensitive parsing to the enumeration (forces lower flag). (default: false) - --marshal Adds text (and inherently json) marshalling functions. (default: false) - --sql Adds SQL database scan and value functions. (default: false) - --flag Adds golang flag functions. (default: false) - --prefix value Replaces the prefix with a user one. - --names Generates a 'Names() []string' function, and adds the possible enum values in the error response during parsing (default: false) - --nocamel Removes the snake_case to CamelCase name changing (default: false) - --ptr Adds a pointer method to get a pointer from const values (default: false) - --sqlnullint Adds a Null{{ENUM}} type for marshalling a nullable int value to sql (default: false) - --sqlnullstr Adds a Null{{ENUM}} type for marshalling a nullable string value to sql. If sqlnullint is specified too, it will be Null{{ENUM}}Str (default: false) - --template value, -t value Additional template file(s) to generate enums. Use more than one flag for more files. Templates will be executed in alphabetical order. - --alias value, -a value Adds or replaces aliases for a non alphanumeric value that needs to be accounted for. [Format should be "key:value,key2:value2", or specify multiple entries, or both!] - --help, -h show help (default: false) - --version, -v print the version (default: false) + --file value, -f value [ --file value, -f value ] The file(s) to generate enums. Use more than one flag for more files. [$GOFILE] + --noprefix Prevents the constants generated from having the Enum as a prefix. (default: false) + --lower Adds lowercase variants of the enum strings for lookup. (default: false) + --nocase Adds case insensitive parsing to the enumeration (forces lower flag). (default: false) + --marshal Adds text (and inherently json) marshalling functions. (default: false) + --sql Adds SQL database scan and value functions. (default: false) + --sqlint Tells the generator that a string typed enum should be stored in sql as an integer value. (default: false) + --flag Adds golang flag functions. (default: false) + --prefix value Adds a prefix with a user one. If you would like to replace the prefix, then combine this option with --noprefix. + --names Generates a 'Names() []string' function, and adds the possible enum values in the error response during parsing (default: false) + --values Generates a 'Values() []{{ENUM}}' function. (default: false) + --nocamel Removes the snake_case to CamelCase name changing (default: false) + --ptr Adds a pointer method to get a pointer from const values (default: false) + --sqlnullint Adds a Null{{ENUM}} type for marshalling a nullable int value to sql (default: false) + --sqlnullstr Adds a Null{{ENUM}} type for marshalling a nullable string value to sql. If sqlnullint is specified too, it will be Null{{ENUM}}Str (default: false) + --template value, -t value [ --template value, -t value ] Additional template file(s) to generate enums. Use more than one flag for more files. Templates will be executed in alphabetical order. + --alias value, -a value [ --alias value, -a value ] Adds or replaces aliases for a non alphanumeric value that needs to be accounted for. [Format should be "key:value,key2:value2", or specify multiple entries, or both!] + --mustparse Adds a Must version of the Parse that will panic on failure. (default: false) + --forcelower Forces a camel cased comment to generate lowercased names. (default: false) + --nocomments Removes auto generated comments. If you add your own comments, these will still be created. (default: false) + --buildtag value, -b value [ --buildtag value, -b value ] Adds build tags to a generated enum file. + --help, -h show help + --version, -v print the version ``` ### Syntax @@ -167,6 +173,8 @@ The parser looks for comments on your type defs and parse the enum declarations The parser will look for `ENUM(` and continue to look for comma separated values until it finds a `)`. You can put values on the same line, or on multiple lines.\ If you need to have a specific value jump in the enum, you can now specify that by adding `=numericValue` to the enum declaration. Keep in mind, this resets the data for all following values. So if you specify `50` in the middle of an enum, each value after that will be `51, 52, 53...` +[Examples can be found in the example folder](./example/) + #### Comments You can use comments inside enum that start with `//`\ diff --git a/_example/globs/gen.go b/_example/globs/gen.go deleted file mode 100644 index f31bb06c..00000000 --- a/_example/globs/gen.go +++ /dev/null @@ -1,3 +0,0 @@ -//go:generate ../../bin/go-enum -f=*.go - -package globs diff --git a/_example/animal.go b/example/animal.go similarity index 51% rename from _example/animal.go rename to example/animal.go index ea64ee7e..c8002613 100644 --- a/_example/animal.go +++ b/example/animal.go @@ -1,4 +1,7 @@ -//go:generate ../bin/go-enum -a "+:Plus,#:Sharp" +//go:build example +// +build example + +//go:generate ../bin/go-enum -a "+:Plus,#:Sharp" -b example package example diff --git a/_example/animal_enum.go b/example/animal_enum.go similarity index 97% rename from _example/animal_enum.go rename to example/animal_enum.go index 9ae1a9e8..e69701b7 100644 --- a/_example/animal_enum.go +++ b/example/animal_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/animal_test.go b/example/animal_test.go similarity index 98% rename from _example/animal_test.go rename to example/animal_test.go index 472941ea..bb3efe3f 100644 --- a/_example/animal_test.go +++ b/example/animal_test.go @@ -1,3 +1,6 @@ +//go:build example +// +build example + package example import ( diff --git a/_example/color.go b/example/color.go similarity index 85% rename from _example/color.go rename to example/color.go index d1ba0f96..56e587d0 100644 --- a/_example/color.go +++ b/example/color.go @@ -1,4 +1,7 @@ -//go:generate ../bin/go-enum --marshal --lower --ptr --mustparse +//go:build example +// +build example + +//go:generate ../bin/go-enum --marshal --lower --ptr --mustparse -b example package example diff --git a/_example/color_enum.go b/example/color_enum.go similarity index 99% rename from _example/color_enum.go rename to example/color_enum.go index c77e2a2f..c5fcd156 100644 --- a/_example/color_enum.go +++ b/example/color_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/color_test.go b/example/color_test.go similarity index 99% rename from _example/color_test.go rename to example/color_test.go index 8d332f12..4853bdc6 100644 --- a/_example/color_test.go +++ b/example/color_test.go @@ -1,3 +1,6 @@ +//go:build example +// +build example + package example import ( @@ -236,7 +239,6 @@ func TestColorMarshal(t *testing.T) { } func BenchmarkColorParse(b *testing.B) { - knownItems := []string{ ColorRedOrangeBlue.String(), strings.ToLower(ColorRedOrangeBlue.String()), @@ -254,5 +256,4 @@ func BenchmarkColorParse(b *testing.B) { } }) } - } diff --git a/_example/commented.go b/example/commented.go similarity index 87% rename from _example/commented.go rename to example/commented.go index 1331f463..423a852e 100644 --- a/_example/commented.go +++ b/example/commented.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum --marshal --lower +//go:generate ../bin/go-enum --marshal --lower -b example package example diff --git a/_example/commented_enum.go b/example/commented_enum.go similarity index 99% rename from _example/commented_enum.go rename to example/commented_enum.go index 265cad64..be3f3fc6 100644 --- a/_example/commented_enum.go +++ b/example/commented_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/commented_test.go b/example/commented_test.go similarity index 99% rename from _example/commented_test.go rename to example/commented_test.go index c43fe536..e4639ffd 100644 --- a/_example/commented_test.go +++ b/example/commented_test.go @@ -1,3 +1,6 @@ +//go:build example +// +build example + package example import ( diff --git a/_example/custom_prefix.go b/example/custom_prefix.go similarity index 63% rename from _example/custom_prefix.go rename to example/custom_prefix.go index e3e35731..c63403b4 100644 --- a/_example/custom_prefix.go +++ b/example/custom_prefix.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum --prefix=AcmeInc +//go:generate ../bin/go-enum --prefix=AcmeInc -b example package example diff --git a/_example/custom_prefix_enum.go b/example/custom_prefix_enum.go similarity index 97% rename from _example/custom_prefix_enum.go rename to example/custom_prefix_enum.go index 3309382b..a153fe91 100644 --- a/_example/custom_prefix_enum.go +++ b/example/custom_prefix_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/custom_prefix_test.go b/example/custom_prefix_test.go similarity index 98% rename from _example/custom_prefix_test.go rename to example/custom_prefix_test.go index efd16306..12b17577 100644 --- a/_example/custom_prefix_test.go +++ b/example/custom_prefix_test.go @@ -1,3 +1,6 @@ +//go:build example +// +build example + package example import ( diff --git a/_example/enum_32_bit.go b/example/enum_32_bit.go similarity index 85% rename from _example/enum_32_bit.go rename to example/enum_32_bit.go index 8a2d4333..07312cd1 100644 --- a/_example/enum_32_bit.go +++ b/example/enum_32_bit.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum --names +//go:generate ../bin/go-enum --names -b example package example diff --git a/_example/enum_32_bit_enum.go b/example/enum_32_bit_enum.go similarity index 98% rename from _example/enum_32_bit_enum.go rename to example/enum_32_bit_enum.go index 24f46793..9a773bd4 100644 --- a/_example/enum_32_bit_enum.go +++ b/example/enum_32_bit_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/enum_32_bit_test.go b/example/enum_32_bit_test.go similarity index 95% rename from _example/enum_32_bit_test.go rename to example/enum_32_bit_test.go index 23bad207..cb3e8d9e 100644 --- a/_example/enum_32_bit_test.go +++ b/example/enum_32_bit_test.go @@ -1,3 +1,6 @@ +//go:build example +// +build example + package example import ( @@ -7,7 +10,6 @@ import ( ) func TestEnum32Bit(t *testing.T) { - tests := map[string]struct { input string output Enum32bit @@ -41,5 +43,4 @@ func TestEnum32Bit(t *testing.T) { names := Enum32bitNames() assert.Len(t, names, 12) }) - } diff --git a/_example/enum_64_bit.go b/example/enum_64_bit.go similarity index 88% rename from _example/enum_64_bit.go rename to example/enum_64_bit.go index b8d6e1fc..6e31b73b 100644 --- a/_example/enum_64_bit.go +++ b/example/enum_64_bit.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum --names +//go:generate ../bin/go-enum --names -b example package example diff --git a/_example/enum_64_bit_enum.go b/example/enum_64_bit_enum.go similarity index 99% rename from _example/enum_64_bit_enum.go rename to example/enum_64_bit_enum.go index 6ccb166b..caeeccc7 100644 --- a/_example/enum_64_bit_enum.go +++ b/example/enum_64_bit_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/enum_64_bit_test.go b/example/enum_64_bit_test.go similarity index 95% rename from _example/enum_64_bit_test.go rename to example/enum_64_bit_test.go index 6e689be4..0e2e2bcb 100644 --- a/_example/enum_64_bit_test.go +++ b/example/enum_64_bit_test.go @@ -1,3 +1,6 @@ +//go:build example +// +build example + package example import ( @@ -7,7 +10,6 @@ import ( ) func TestEnum64Bit(t *testing.T) { - tests := map[string]struct { input string output Enum64bit @@ -41,5 +43,4 @@ func TestEnum64Bit(t *testing.T) { names := Enum64bitNames() assert.Len(t, names, 16) }) - } diff --git a/_example/example.go b/example/example.go similarity index 94% rename from _example/example.go rename to example/example.go index 094bf98a..30a154d2 100644 --- a/_example/example.go +++ b/example/example.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum --marshal --nocase --flag --names --values +//go:generate ../bin/go-enum --marshal --nocase --flag --names --values -b example package example diff --git a/_example/example_enum.go b/example/example_enum.go similarity index 99% rename from _example/example_enum.go rename to example/example_enum.go index cb76fe52..7035c7ce 100644 --- a/_example/example_enum.go +++ b/example/example_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/example_test.go b/example/example_test.go similarity index 99% rename from _example/example_test.go rename to example/example_test.go index 2e3d7e19..b9f22bbf 100644 --- a/_example/example_test.go +++ b/example/example_test.go @@ -1,3 +1,6 @@ +//go:build example +// +build example + package example import ( @@ -195,7 +198,6 @@ func TestNoZeroValues(t *testing.T) { err = json.Unmarshal([]byte(`{"nz":"pppps"}`), &val) assert.EqualError(tt, err, "pppps is not a valid NoZeros, try [start, middle, end, ps, pps, ppps]") - }) for _, name := range NoZerosNames() { @@ -215,14 +217,11 @@ func TestNoZeroValues(t *testing.T) { require.Equal(tt, nz.Type(), "NoZeros") require.Equal(tt, NoZeros(0), nz.Get(), "Unset value should be default") require.NoError(tt, nz.Set(name), "failed setting flag value") - }) - } } func BenchmarkMakeParse(b *testing.B) { - knownItems := map[string]struct { input string output Make @@ -272,5 +271,4 @@ func BenchmarkMakeParse(b *testing.B) { } }) } - } diff --git a/_example/force_lower.go b/example/force_lower.go similarity index 60% rename from _example/force_lower.go rename to example/force_lower.go index f1e23c37..dff681a2 100644 --- a/_example/force_lower.go +++ b/example/force_lower.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum --forcelower +//go:generate ../bin/go-enum --forcelower -b example package example diff --git a/_example/force_lower_enum.go b/example/force_lower_enum.go similarity index 97% rename from _example/force_lower_enum.go rename to example/force_lower_enum.go index 97bb5390..8cbcf127 100644 --- a/_example/force_lower_enum.go +++ b/example/force_lower_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/force_lower_test.go b/example/force_lower_test.go similarity index 95% rename from _example/force_lower_test.go rename to example/force_lower_test.go index 49d03bd9..5fa32e27 100644 --- a/_example/force_lower_test.go +++ b/example/force_lower_test.go @@ -1,3 +1,6 @@ +//go:build example +// +build example + package example import ( @@ -7,7 +10,6 @@ import ( ) func TestForceLowerString(t *testing.T) { - tests := map[string]struct { input string output ForceLowerType @@ -36,6 +38,5 @@ func TestForceLowerString(t *testing.T) { assert.Equal(t, "ForceLowerType(99)", ForceLowerType(99).String()) _, err := ParseForceLowerType("-1") assert.Error(t, err) - }) } diff --git a/example/globs/gen.go b/example/globs/gen.go new file mode 100644 index 00000000..86ca94b5 --- /dev/null +++ b/example/globs/gen.go @@ -0,0 +1,6 @@ +//go:build example +// +build example + +//go:generate ../../bin/go-enum -f=*.go -b example + +package globs diff --git a/_example/globs/letter.go b/example/globs/letter.go similarity index 67% rename from _example/globs/letter.go rename to example/globs/letter.go index 016b45a7..1dcef51e 100644 --- a/_example/globs/letter.go +++ b/example/globs/letter.go @@ -1,8 +1,14 @@ +//go:build example +// +build example + package globs -/** +/* +* ENUM( + a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z + ) */ type Letter int diff --git a/_example/globs/letter_enum.go b/example/globs/letter_enum.go similarity index 90% rename from _example/globs/letter_enum.go rename to example/globs/letter_enum.go index 126593ad..22a5678b 100644 --- a/_example/globs/letter_enum.go +++ b/example/globs/letter_enum.go @@ -4,9 +4,13 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package globs import ( + "errors" "fmt" ) @@ -65,6 +69,8 @@ const ( LetterZ ) +var ErrInvalidLetter = errors.New("not a valid Letter") + const _LetterName = "abcdefghijklmnopqrstuvwxyz" var _LetterMap = map[Letter]string{ @@ -104,6 +110,13 @@ func (x Letter) String() string { return fmt.Sprintf("Letter(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x Letter) IsValid() bool { + _, ok := _LetterMap[x] + return ok +} + var _LetterValue = map[string]Letter{ _LetterName[0:1]: LetterA, _LetterName[1:2]: LetterB, @@ -138,5 +151,5 @@ func ParseLetter(name string) (Letter, error) { if x, ok := _LetterValue[name]; ok { return x, nil } - return Letter(0), fmt.Errorf("%s is not a valid Letter", name) + return Letter(0), fmt.Errorf("%s is %w", name, ErrInvalidLetter) } diff --git a/_example/globs/number.go b/example/globs/number.go similarity index 58% rename from _example/globs/number.go rename to example/globs/number.go index 5641814a..211c255c 100644 --- a/_example/globs/number.go +++ b/example/globs/number.go @@ -1,8 +1,14 @@ +//go:build example +// +build example + package globs -/** +/* +* ENUM( + 0,1,2,3,4,5,6,7,8,9 + ) */ type Number int diff --git a/_example/globs/number_enum.go b/example/globs/number_enum.go similarity index 82% rename from _example/globs/number_enum.go rename to example/globs/number_enum.go index 7a7183af..83b6657b 100644 --- a/_example/globs/number_enum.go +++ b/example/globs/number_enum.go @@ -4,9 +4,13 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package globs import ( + "errors" "fmt" ) @@ -33,6 +37,8 @@ const ( Number9 ) +var ErrInvalidNumber = errors.New("not a valid Number") + const _NumberName = "0123456789" var _NumberMap = map[Number]string{ @@ -56,6 +62,13 @@ func (x Number) String() string { return fmt.Sprintf("Number(%d)", x) } +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x Number) IsValid() bool { + _, ok := _NumberMap[x] + return ok +} + var _NumberValue = map[string]Number{ _NumberName[0:1]: Number0, _NumberName[1:2]: Number1, @@ -74,5 +87,5 @@ func ParseNumber(name string) (Number, error) { if x, ok := _NumberValue[name]; ok { return x, nil } - return Number(0), fmt.Errorf("%s is not a valid Number", name) + return Number(0), fmt.Errorf("%s is %w", name, ErrInvalidNumber) } diff --git a/_example/go_enum_enum_test.go b/example/go_enum_enum_test.go similarity index 100% rename from _example/go_enum_enum_test.go rename to example/go_enum_enum_test.go diff --git a/_example/go_enum_test.go b/example/go_enum_test.go similarity index 98% rename from _example/go_enum_test.go rename to example/go_enum_test.go index 363f08db..4f33ae80 100644 --- a/_example/go_enum_test.go +++ b/example/go_enum_test.go @@ -3,8 +3,10 @@ package example /* ENUM( + ABCD (x), EFGH (y), + ) */ type TestOnlyEnum string diff --git a/_example/negative.go b/example/negative.go similarity index 73% rename from _example/negative.go rename to example/negative.go index 15a12f2f..a33013c2 100644 --- a/_example/negative.go +++ b/example/negative.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum --nocase +//go:generate ../bin/go-enum --nocase -b example package example diff --git a/_example/negative_enum.go b/example/negative_enum.go similarity index 99% rename from _example/negative_enum.go rename to example/negative_enum.go index ae0f4997..a3d458b9 100644 --- a/_example/negative_enum.go +++ b/example/negative_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/negative_test.go b/example/negative_test.go similarity index 98% rename from _example/negative_test.go rename to example/negative_test.go index 2f8c1f82..34c3edce 100644 --- a/_example/negative_test.go +++ b/example/negative_test.go @@ -1,3 +1,6 @@ +//go:build example +// +build example + package example import ( @@ -7,7 +10,6 @@ import ( ) func TestStatusString(t *testing.T) { - tests := map[string]struct { input string output Status @@ -47,12 +49,10 @@ func TestStatusString(t *testing.T) { assert.NoError(t, err) assert.Equal(t, StatusBad, actual) }) - }) } func TestNegativeString(t *testing.T) { - tests := map[string]struct { input string output AllNegative @@ -91,7 +91,6 @@ func TestNegativeString(t *testing.T) { assert.Error(t, err) assert.Equal(t, AllNegative(0), allN) - }) t.Run("cased", func(t *testing.T) { actual, err := ParseAllNegative("UGLY") diff --git a/_example/replace_prefix.go b/example/replace_prefix.go similarity index 84% rename from _example/replace_prefix.go rename to example/replace_prefix.go index eca8440a..25f6ad92 100644 --- a/_example/replace_prefix.go +++ b/example/replace_prefix.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum --marshal --prefix=AcmeInc_ --noprefix --nocamel --names +//go:generate ../bin/go-enum --marshal --prefix=AcmeInc_ --noprefix --nocamel --names -b example package example diff --git a/_example/replace_prefix_enum.go b/example/replace_prefix_enum.go similarity index 98% rename from _example/replace_prefix_enum.go rename to example/replace_prefix_enum.go index 24dd2879..3ae36f33 100644 --- a/_example/replace_prefix_enum.go +++ b/example/replace_prefix_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/replace_prefix_int.go b/example/replace_prefix_int.go similarity index 84% rename from _example/replace_prefix_int.go rename to example/replace_prefix_int.go index a2f9c146..ef6f26af 100644 --- a/_example/replace_prefix_int.go +++ b/example/replace_prefix_int.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum --marshal --prefix=AcmeInt_ --noprefix --nocamel --names +//go:generate ../bin/go-enum --marshal --prefix=AcmeInt_ --noprefix --nocamel --names -b example package example diff --git a/_example/replace_prefix_int_enum.go b/example/replace_prefix_int_enum.go similarity index 98% rename from _example/replace_prefix_int_enum.go rename to example/replace_prefix_int_enum.go index 4b09902f..facf966d 100644 --- a/_example/replace_prefix_int_enum.go +++ b/example/replace_prefix_int_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/sql.go b/example/sql.go similarity index 79% rename from _example/sql.go rename to example/sql.go index 3436a79c..02bcfec4 100644 --- a/_example/sql.go +++ b/example/sql.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum --sql --sqlnullstr --sqlnullint --ptr --marshal --nocomments +//go:generate ../bin/go-enum --sql --sqlnullstr --sqlnullint --ptr --marshal --nocomments -b example package example diff --git a/_example/sql_1_11_test.go b/example/sql_1_11_test.go similarity index 99% rename from _example/sql_1_11_test.go rename to example/sql_1_11_test.go index 5d519292..befdf149 100644 --- a/_example/sql_1_11_test.go +++ b/example/sql_1_11_test.go @@ -1,3 +1,6 @@ +//go:build example +// +build example + //go:generate ../bin/mockgen -destination sql_mock_test.go -package example database/sql/driver Conn,Driver,Stmt,Result,Rows /* @@ -47,7 +50,6 @@ func MatchesValues(vals ...driver.Value) *DriverValueMatcher { // Matches returns whether x is a match. func (d *DriverValueMatcher) Matches(x interface{}) bool { - switch values := x.(type) { case []driver.Value: if len(values) != len(d.values) { @@ -97,7 +99,6 @@ func WithMockSQL(t testing.TB) (*MockSQL, func()) { } func TestExampleSQL(t *testing.T) { - tests := map[string]struct { setupMock func(t testing.TB, mocks *MockSQL) tester func(t testing.TB, db *sql.DB) @@ -467,7 +468,6 @@ func TestExampleSQL(t *testing.T) { sql.Register("mock", driver) for name, tc := range tests { t.Run(name, func(t *testing.T) { - require.NotNil(t, tc.setupMock) require.NotNil(t, tc.tester) @@ -482,7 +482,6 @@ func TestExampleSQL(t *testing.T) { tc.setupMock(t, mocks) tc.tester(t, conn) - }) } } diff --git a/_example/sql_enum.go b/example/sql_enum.go similarity index 99% rename from _example/sql_enum.go rename to example/sql_enum.go index 7f2b46d9..acd99411 100644 --- a/_example/sql_enum.go +++ b/example/sql_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/sql_int.go b/example/sql_int.go similarity index 57% rename from _example/sql_int.go rename to example/sql_int.go index 082e6edc..cc818458 100644 --- a/_example/sql_int.go +++ b/example/sql_int.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum --sqlnullint +//go:generate ../bin/go-enum --sqlnullint -b example package example diff --git a/_example/sql_int_enum.go b/example/sql_int_enum.go similarity index 99% rename from _example/sql_int_enum.go rename to example/sql_int_enum.go index 9fad36f3..6a4695b4 100644 --- a/_example/sql_int_enum.go +++ b/example/sql_int_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/sql_int_enum_test.go b/example/sql_int_enum_test.go similarity index 99% rename from _example/sql_int_enum_test.go rename to example/sql_int_enum_test.go index 6d0350b4..f388be92 100644 --- a/_example/sql_int_enum_test.go +++ b/example/sql_int_enum_test.go @@ -1,3 +1,6 @@ +//go:build example +// +build example + package example import ( @@ -16,7 +19,6 @@ const ( ) func TestExampleSQLIntOnly(t *testing.T) { - tests := map[string]struct { setupMock func(t testing.TB, mocks *MockSQL) tester func(t testing.TB, db *sql.DB) @@ -332,7 +334,6 @@ func TestExampleSQLIntOnly(t *testing.T) { for name, tc := range tests { t.Run(name, func(t *testing.T) { - require.NotNil(t, tc.setupMock) require.NotNil(t, tc.tester) @@ -348,7 +349,6 @@ func TestExampleSQLIntOnly(t *testing.T) { tc.setupMock(t, mocks) tc.tester(t, conn) - }) } } @@ -369,7 +369,6 @@ func setImageType(db *sql.DB, state interface{}) error { } func TestSQLIntExtras(t *testing.T) { - assert.Equal(t, "ImageType(22)", ImageType(22).String(), "String value is not correct") _, err := ParseImageType(`NotAStatus`) @@ -475,8 +474,6 @@ func TestSQLIntExtras(t *testing.T) { t.Run(name, func(t *testing.T) { status := NewNullImageType(tc.input) assert.Equal(t, status, tc.result) - }) } - } diff --git a/_example/sql_mock_test.go b/example/sql_mock_test.go similarity index 100% rename from _example/sql_mock_test.go rename to example/sql_mock_test.go diff --git a/_example/sql_str.go b/example/sql_str.go similarity index 58% rename from _example/sql_str.go rename to example/sql_str.go index f5525011..b46029de 100644 --- a/_example/sql_str.go +++ b/example/sql_str.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum --sql --sqlnullstr +//go:generate ../bin/go-enum --sql --sqlnullstr -b example package example diff --git a/_example/sql_str_enum.go b/example/sql_str_enum.go similarity index 99% rename from _example/sql_str_enum.go rename to example/sql_str_enum.go index 98a75926..a9402dff 100644 --- a/_example/sql_str_enum.go +++ b/example/sql_str_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/sql_str_enum_test.go b/example/sql_str_enum_test.go similarity index 99% rename from _example/sql_str_enum_test.go rename to example/sql_str_enum_test.go index 9e4d09f3..9d8b9348 100644 --- a/_example/sql_str_enum_test.go +++ b/example/sql_str_enum_test.go @@ -1,3 +1,6 @@ +//go:build example +// +build example + package example import ( @@ -11,7 +14,6 @@ import ( ) func TestExampleSQLStrOnly(t *testing.T) { - tests := map[string]struct { setupMock func(t testing.TB, mocks *MockSQL) tester func(t testing.TB, db *sql.DB) @@ -284,7 +286,6 @@ func TestExampleSQLStrOnly(t *testing.T) { for name, tc := range tests { t.Run(name, func(t *testing.T) { - require.NotNil(t, tc.setupMock) require.NotNil(t, tc.tester) @@ -300,7 +301,6 @@ func TestExampleSQLStrOnly(t *testing.T) { tc.setupMock(t, mocks) tc.tester(t, conn) - }) } } @@ -321,7 +321,6 @@ func setJobState(db *sql.DB, state interface{}) error { } func TestSQLStrExtras(t *testing.T) { - assert.Equal(t, "JobState(22)", JobState(22).String(), "String value is not correct") _, err := ParseJobState(`NotAStatus`) @@ -423,8 +422,6 @@ func TestSQLStrExtras(t *testing.T) { t.Run(name, func(t *testing.T) { status := NewNullJobState(tc.input) assert.Equal(t, status, tc.result) - }) } - } diff --git a/_example/sql_str_int.go b/example/sql_str_int.go similarity index 92% rename from _example/sql_str_int.go rename to example/sql_str_int.go index 70a2bae6..c258969b 100644 --- a/_example/sql_str_int.go +++ b/example/sql_str_int.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -f=$GOFILE --sqlint --sqlnullint --names +//go:generate ../bin/go-enum -f=$GOFILE --sqlint --sqlnullint --names -b example package example diff --git a/_example/sql_str_int_enum.go b/example/sql_str_int_enum.go similarity index 99% rename from _example/sql_str_int_enum.go rename to example/sql_str_int_enum.go index 9353d46d..a1218b90 100644 --- a/_example/sql_str_int_enum.go +++ b/example/sql_str_int_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/sql_str_int_enum_test.go b/example/sql_str_int_enum_test.go similarity index 99% rename from _example/sql_str_int_enum_test.go rename to example/sql_str_int_enum_test.go index d30fab5b..7c8c140b 100644 --- a/_example/sql_str_int_enum_test.go +++ b/example/sql_str_int_enum_test.go @@ -1,3 +1,6 @@ +//go:build example +// +build example + package example import ( @@ -12,7 +15,6 @@ import ( ) func TestExampleSQLStrIntOnly(t *testing.T) { - tests := map[string]struct { setupMock func(t testing.TB, mocks *MockSQL) tester func(t testing.TB, db *sql.DB) @@ -285,7 +287,6 @@ func TestExampleSQLStrIntOnly(t *testing.T) { for name, tc := range tests { t.Run(name, func(t *testing.T) { - require.NotNil(t, tc.setupMock) require.NotNil(t, tc.tester) @@ -301,7 +302,6 @@ func TestExampleSQLStrIntOnly(t *testing.T) { tc.setupMock(t, mocks) tc.tester(t, conn) - }) } } @@ -322,7 +322,6 @@ func setGreekGod(db *sql.DB, state interface{}) error { } func TestSQLStrIntExtras(t *testing.T) { - assert.Equal(t, sqlIntGreekGodMap[20], GreekGod("athena"), "String value is not correct") _, err := ParseGreekGod(`NotAStatus`) @@ -425,8 +424,6 @@ func TestSQLStrIntExtras(t *testing.T) { t.Run(name, func(t *testing.T) { god := NewNullJobState(tc.input) assert.Equal(t, god, tc.result) - }) } - } diff --git a/_example/sql_test.go b/example/sql_test.go similarity index 99% rename from _example/sql_test.go rename to example/sql_test.go index 09007528..3d648b42 100644 --- a/_example/sql_test.go +++ b/example/sql_test.go @@ -1,3 +1,6 @@ +//go:build example +// +build example + package example import ( @@ -9,7 +12,6 @@ import ( ) func TestSQLExtras(t *testing.T) { - assert.Equal(t, "ProjectStatus(22)", ProjectStatus(22).String(), "String value is not correct") _, err := ParseProjectStatus(`NotAStatus`) @@ -129,7 +131,6 @@ func TestSQLExtras(t *testing.T) { assert.Equal(t, tc.result, status) }) } - } type SQLMarshalType struct { @@ -139,7 +140,6 @@ type SQLMarshalType struct { } func TestSQLMarshal(t *testing.T) { - var val SQLMarshalType var val2 SQLMarshalType @@ -197,5 +197,4 @@ func TestSQLMarshal(t *testing.T) { assert.Equal(t, val, val2) require.Error(t, json.Unmarshal([]byte(`{"status2":"xyz"}`), &val2)) - } diff --git a/_example/strings_only.go b/example/strings_only.go similarity index 68% rename from _example/strings_only.go rename to example/strings_only.go index e296a71c..d8b38648 100644 --- a/_example/strings_only.go +++ b/example/strings_only.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum --ptr --marshal --flag --nocase --mustparse --sqlnullstr --sql --names --values --nocomments +//go:generate ../bin/go-enum --ptr --marshal --flag --nocase --mustparse --sqlnullstr --sql --names --values --nocomments -b example package example diff --git a/_example/strings_only_enum.go b/example/strings_only_enum.go similarity index 99% rename from _example/strings_only_enum.go rename to example/strings_only_enum.go index 36fbb46a..b08d60ab 100644 --- a/_example/strings_only_enum.go +++ b/example/strings_only_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/strings_only_test.go b/example/strings_only_test.go similarity index 99% rename from _example/strings_only_test.go rename to example/strings_only_test.go index bdc0b341..8111043f 100644 --- a/_example/strings_only_test.go +++ b/example/strings_only_test.go @@ -1,3 +1,6 @@ +//go:build example +// +build example + package example import ( @@ -55,7 +58,8 @@ func TestStrStateUnmarshal(t *testing.T) { output: &testData{StrStateX: StrStateRunning}, errorExpected: false, err: nil, - }, { + }, + { name: "running", input: `{"state":"running"}`, output: &testData{StrStateX: StrStateRunning}, @@ -158,7 +162,6 @@ func TestStrStateMarshal(t *testing.T) { } func TestStrStateSQLExtras(t *testing.T) { - _, err := ParseStrState(`NotAState`) assert.Error(t, err, "Should have had an error parsing a non status") @@ -250,8 +253,6 @@ func TestStrStateSQLExtras(t *testing.T) { t.Run(name, func(t *testing.T) { status := NewNullStrState(tc.input) assert.Equal(t, status, tc.result) - }) } - } diff --git a/_example/user_globbed.tmpl b/example/user_globbed.tmpl similarity index 100% rename from _example/user_globbed.tmpl rename to example/user_globbed.tmpl diff --git a/_example/user_globbed2.tmpl b/example/user_globbed2.tmpl similarity index 100% rename from _example/user_globbed2.tmpl rename to example/user_globbed2.tmpl diff --git a/_example/user_template.go b/example/user_template.go similarity index 91% rename from _example/user_template.go rename to example/user_template.go index a46332e8..2392acb1 100644 --- a/_example/user_template.go +++ b/example/user_template.go @@ -1,4 +1,4 @@ -//go:generate ../bin/go-enum -t user_template.tmpl -t *user_glob*.tmpl +//go:generate ../bin/go-enum -t user_template.tmpl -t *user_glob*.tmpl -b example package example diff --git a/_example/user_template.tmpl b/example/user_template.tmpl similarity index 100% rename from _example/user_template.tmpl rename to example/user_template.tmpl diff --git a/_example/user_template_enum.go b/example/user_template_enum.go similarity index 97% rename from _example/user_template_enum.go rename to example/user_template_enum.go index 85b761ff..2a7479eb 100644 --- a/_example/user_template_enum.go +++ b/example/user_template_enum.go @@ -4,6 +4,9 @@ // Build Date: example // Built By: example +//go:build example +// +build example + package example import ( diff --git a/_example/user_template_test.go b/example/user_template_test.go similarity index 93% rename from _example/user_template_test.go rename to example/user_template_test.go index b6c0fa30..127ec076 100644 --- a/_example/user_template_test.go +++ b/example/user_template_test.go @@ -1,3 +1,6 @@ +//go:build example +// +build example + package example import ( diff --git a/generator/enum.tmpl b/generator/enum.tmpl index 6c605085..1d7528a1 100644 --- a/generator/enum.tmpl +++ b/generator/enum.tmpl @@ -4,6 +4,10 @@ // Revision: {{ .revision }} // Build Date: {{ .buildDate }} // Built By: {{ .builtBy }} +{{ range $idx, $tag := .buildTags }} +//go:build {{$tag}} +// +build {{$tag}} +{{- end }} package {{.package}} diff --git a/generator/generator.go b/generator/generator.go index aff464c9..84668752 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -54,6 +54,7 @@ type Generator struct { mustParse bool forceLower bool noComments bool + buildTags []string } // Enum holds data for a discovered enum in the parsed source @@ -209,6 +210,12 @@ func (g *Generator) WithNoComments() *Generator { return g } +// WithBuildTags will add build tags to the generated file. +func (g *Generator) WithBuildTags(tags ...string) *Generator { + g.buildTags = append(g.buildTags, tags...) + return g +} + func (g *Generator) anySQLEnabled() bool { return g.sql || g.sqlNullStr || g.sqlint || g.sqlNullInt } @@ -273,6 +280,7 @@ func (g *Generator) Generate(f *ast.File) ([]byte, error) { "revision": g.Revision, "buildDate": g.BuildDate, "builtBy": g.BuiltBy, + "buildTags": g.buildTags, }) if err != nil { return nil, fmt.Errorf("failed writing header: %w", err) diff --git a/generator/generator_1.18_test.go b/generator/generator_1.18_test.go index d0945434..fd536b36 100644 --- a/generator/generator_1.18_test.go +++ b/generator/generator_1.18_test.go @@ -83,7 +83,7 @@ func Test118ExampleFileMoreOptions(t *testing.T) { WithoutSnakeToCamel(). WithMustParse(). WithForceLower(). - WithTemplates(`../_example/user_template.tmpl`) + WithTemplates(`../example/user_template.tmpl`) for name, testExample := range testExampleFiles { t.Run(name, func(t *testing.T) { // Parse the file given in arguments diff --git a/generator/generator_test.go b/generator/generator_test.go index 3f9750b3..5255559e 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -75,7 +75,7 @@ func TestExampleFileMoreOptions(t *testing.T) { WithoutSnakeToCamel(). WithMustParse(). WithForceLower(). - WithTemplates(`../_example/user_template.tmpl`) + WithTemplates(`../example/user_template.tmpl`) // Parse the file given in arguments imported, err := g.GenerateFromFile(testExample) require.Nil(t, err, "Error generating formatted code") diff --git a/go.mod b/go.mod index b18efabc..65e26528 100644 --- a/go.mod +++ b/go.mod @@ -8,6 +8,7 @@ require ( github.com/golang/mock v1.6.0 github.com/labstack/gommon v0.4.0 github.com/mattn/goveralls v0.0.11 + github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.2 github.com/urfave/cli/v2 v2.25.1 golang.org/x/text v0.8.0 @@ -32,7 +33,6 @@ require ( github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shopspring/decimal v1.2.0 // indirect github.com/spf13/cast v1.3.1 // indirect - github.com/spf13/pflag v1.0.5 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect golang.org/x/crypto v0.3.0 // indirect golang.org/x/mod v0.9.0 // indirect diff --git a/main.go b/main.go index e209a13c..f023bd2b 100644 --- a/main.go +++ b/main.go @@ -37,6 +37,7 @@ type rootT struct { Ptr bool TemplateFileNames cli.StringSlice Aliases cli.StringSlice + BuildTags cli.StringSlice MustParse bool ForceLower bool NoComments bool @@ -161,6 +162,12 @@ func main() { Usage: "Removes auto generated comments. If you add your own comments, these will still be created.", Destination: &argv.NoComments, }, + &cli.StringSliceFlag{ + Name: "buildtag", + Aliases: []string{"b"}, + Usage: "Adds build tags to a generated enum file.", + Destination: &argv.BuildTags, + }, }, Action: func(ctx *cli.Context) error { if err := generator.ParseAliases(argv.Aliases.Value()); err != nil { @@ -174,6 +181,8 @@ func main() { g.BuildDate = date g.BuiltBy = builtBy + g.WithBuildTags(argv.BuildTags.Value()...) + if argv.NoPrefix { g.WithNoPrefix() } From f641c25e75b66565d414610cfad30873ac492912 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 May 2023 17:49:12 -0700 Subject: [PATCH 56/91] Bump github.com/stretchr/testify from 1.8.2 to 1.8.3 (#193) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.2 to 1.8.3. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.8.2...v1.8.3) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 65e26528..4d7b18b1 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/labstack/gommon v0.4.0 github.com/mattn/goveralls v0.0.11 github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.8.2 + github.com/stretchr/testify v1.8.3 github.com/urfave/cli/v2 v2.25.1 golang.org/x/text v0.8.0 golang.org/x/tools v0.7.0 diff --git a/go.sum b/go.sum index 4398f4dc..fe05420d 100644 --- a/go.sum +++ b/go.sum @@ -60,16 +60,12 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/urfave/cli/v2 v2.25.1 h1:zw8dSP7ghX0Gmm8vugrs6q9Ku0wzweqPyshy+syu9Gw= github.com/urfave/cli/v2 v2.25.1/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= From dab27877cde1013645098b28118c40c2daf7f7d2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 May 2023 19:47:10 -0700 Subject: [PATCH 57/91] Bump golang.org/x/tools from 0.7.0 to 0.9.1 (#192) Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.7.0 to 0.9.1. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.7.0...v0.9.1) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 4d7b18b1..77aeb041 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.8.3 github.com/urfave/cli/v2 v2.25.1 golang.org/x/text v0.8.0 - golang.org/x/tools v0.7.0 + golang.org/x/tools v0.9.1 golang.org/x/tools/cmd/cover v0.1.0-deprecated ) @@ -35,8 +35,8 @@ require ( github.com/spf13/cast v1.3.1 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect golang.org/x/crypto v0.3.0 // indirect - golang.org/x/mod v0.9.0 // indirect - golang.org/x/sys v0.6.0 // indirect + golang.org/x/mod v0.10.0 // indirect + golang.org/x/sys v0.8.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index fe05420d..090b883e 100644 --- a/go.sum +++ b/go.sum @@ -81,8 +81,8 @@ golang.org/x/crypto v0.3.0 h1:a06MkbcxBrEFc0w0QIZWXrH/9cCX6KJyWbBOIwAn+7A= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -105,8 +105,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -120,8 +120,8 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= +golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools/cmd/cover v0.1.0-deprecated h1:Rwy+mWYz6loAF+LnG1jHG/JWMHRMMC2/1XX3Ejkx9lA= golang.org/x/tools/cmd/cover v0.1.0-deprecated/go.mod h1:hMDiIvlpN1NoVgmjLjUJE9tMHyxHjFX7RuQ+rW12mSA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 937c8e27f7ecfc04787763a73c4ff27ed572a614 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 May 2023 19:52:22 -0700 Subject: [PATCH 58/91] Bump golang.org/x/text from 0.8.0 to 0.9.0 (#186) Bumps [golang.org/x/text](https://github.com/golang/text) from 0.8.0 to 0.9.0. - [Release notes](https://github.com/golang/text/releases) - [Commits](https://github.com/golang/text/compare/v0.8.0...v0.9.0) --- updated-dependencies: - dependency-name: golang.org/x/text dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 77aeb041..3743633e 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.3 github.com/urfave/cli/v2 v2.25.1 - golang.org/x/text v0.8.0 + golang.org/x/text v0.9.0 golang.org/x/tools v0.9.1 golang.org/x/tools/cmd/cover v0.1.0-deprecated ) diff --git a/go.sum b/go.sum index 090b883e..030169c0 100644 --- a/go.sum +++ b/go.sum @@ -114,8 +114,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= From 4775a7b718f199a657ffb685ecfc38c9e7949d79 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 May 2023 20:02:02 -0700 Subject: [PATCH 59/91] Bump github.com/mattn/goveralls from 0.0.11 to 0.0.12 (#189) Bumps [github.com/mattn/goveralls](https://github.com/mattn/goveralls) from 0.0.11 to 0.0.12. - [Release notes](https://github.com/mattn/goveralls/releases) - [Commits](https://github.com/mattn/goveralls/compare/v0.0.11...v0.0.12) --- updated-dependencies: - dependency-name: github.com/mattn/goveralls dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 3743633e..36cdbf59 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/bradleyjkemp/cupaloy/v2 v2.8.0 github.com/golang/mock v1.6.0 github.com/labstack/gommon v0.4.0 - github.com/mattn/goveralls v0.0.11 + github.com/mattn/goveralls v0.0.12 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.3 github.com/urfave/cli/v2 v2.25.1 diff --git a/go.sum b/go.sum index 030169c0..f57ea36b 100644 --- a/go.sum +++ b/go.sum @@ -37,8 +37,8 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovk github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/goveralls v0.0.11 h1:eJXea6R6IFlL1QMKNMzDvvHv/hwGrnvyig4N+0+XiMM= -github.com/mattn/goveralls v0.0.11/go.mod h1:gU8SyhNswsJKchEV93xRQxX6X3Ei4PJdQk/6ZHvrvRk= +github.com/mattn/goveralls v0.0.12 h1:PEEeF0k1SsTjOBQ8FOmrOAoCu4ytuMaWCnWe94zxbCg= +github.com/mattn/goveralls v0.0.12/go.mod h1:44ImGEUfmqH8bBtaMrYKsM65LXfNLWmwaxFGjZwgMSQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= @@ -81,6 +81,7 @@ golang.org/x/crypto v0.3.0 h1:a06MkbcxBrEFc0w0QIZWXrH/9cCX6KJyWbBOIwAn+7A= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -89,9 +90,12 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -105,21 +109,28 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools/cmd/cover v0.1.0-deprecated h1:Rwy+mWYz6loAF+LnG1jHG/JWMHRMMC2/1XX3Ejkx9lA= From 2712712122b00b53ddb6a32a5d9c7681b72ee73b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 May 2023 20:09:38 -0700 Subject: [PATCH 60/91] Bump github.com/urfave/cli/v2 from 2.25.1 to 2.25.3 (#191) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.25.1 to 2.25.3. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.25.1...v2.25.3) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 36cdbf59..215e6c5c 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/mattn/goveralls v0.0.12 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.3 - github.com/urfave/cli/v2 v2.25.1 + github.com/urfave/cli/v2 v2.25.3 golang.org/x/text v0.9.0 golang.org/x/tools v0.9.1 golang.org/x/tools/cmd/cover v0.1.0-deprecated diff --git a/go.sum b/go.sum index f57ea36b..193418c8 100644 --- a/go.sum +++ b/go.sum @@ -66,8 +66,8 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/urfave/cli/v2 v2.25.1 h1:zw8dSP7ghX0Gmm8vugrs6q9Ku0wzweqPyshy+syu9Gw= -github.com/urfave/cli/v2 v2.25.1/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/urfave/cli/v2 v2.25.3 h1:VJkt6wvEBOoSjPFQvOkv6iWIrsJyCrKGtCtxXWwmGeY= +github.com/urfave/cli/v2 v2.25.3/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= From 5a190536f42feeed663f6379aaf85f845f57fc81 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 May 2023 06:43:52 -0700 Subject: [PATCH 61/91] Bump github.com/urfave/cli/v2 from 2.25.3 to 2.25.4 (#195) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.25.3 to 2.25.4. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.25.3...v2.25.4) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 215e6c5c..12d0d646 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/mattn/goveralls v0.0.12 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.3 - github.com/urfave/cli/v2 v2.25.3 + github.com/urfave/cli/v2 v2.25.4 golang.org/x/text v0.9.0 golang.org/x/tools v0.9.1 golang.org/x/tools/cmd/cover v0.1.0-deprecated diff --git a/go.sum b/go.sum index 193418c8..7eebc0a1 100644 --- a/go.sum +++ b/go.sum @@ -66,8 +66,8 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/urfave/cli/v2 v2.25.3 h1:VJkt6wvEBOoSjPFQvOkv6iWIrsJyCrKGtCtxXWwmGeY= -github.com/urfave/cli/v2 v2.25.3/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/urfave/cli/v2 v2.25.4 h1:HyYwPrTO3im9rYhUff/ZNs78eolxt0nJ4LN+9yJKSH4= +github.com/urfave/cli/v2 v2.25.4/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= From 210c89ee5ec1fc11b04122ab6494133d9d50a439 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Jun 2023 07:04:26 -0700 Subject: [PATCH 62/91] Bump github.com/stretchr/testify from 1.8.3 to 1.8.4 (#196) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.3 to 1.8.4. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.8.3...v1.8.4) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 12d0d646..d6e01894 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/labstack/gommon v0.4.0 github.com/mattn/goveralls v0.0.12 github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.8.3 + github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.25.4 golang.org/x/text v0.9.0 golang.org/x/tools v0.9.1 diff --git a/go.sum b/go.sum index 7eebc0a1..7f3c791c 100644 --- a/go.sum +++ b/go.sum @@ -64,8 +64,8 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/urfave/cli/v2 v2.25.4 h1:HyYwPrTO3im9rYhUff/ZNs78eolxt0nJ4LN+9yJKSH4= github.com/urfave/cli/v2 v2.25.4/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= From cf1fbc728dc878f37513663ac7a2d858e6ea6af3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Jun 2023 14:09:27 +0000 Subject: [PATCH 63/91] Bump golang.org/x/tools from 0.9.1 to 0.9.3 (#197) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d6e01894..97aac15a 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.25.4 golang.org/x/text v0.9.0 - golang.org/x/tools v0.9.1 + golang.org/x/tools v0.9.3 golang.org/x/tools/cmd/cover v0.1.0-deprecated ) diff --git a/go.sum b/go.sum index 7f3c791c..948cf8ed 100644 --- a/go.sum +++ b/go.sum @@ -131,8 +131,8 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= -golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= -golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM= +golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools/cmd/cover v0.1.0-deprecated h1:Rwy+mWYz6loAF+LnG1jHG/JWMHRMMC2/1XX3Ejkx9lA= golang.org/x/tools/cmd/cover v0.1.0-deprecated/go.mod h1:hMDiIvlpN1NoVgmjLjUJE9tMHyxHjFX7RuQ+rW12mSA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 7693601c72e09caca8c8b8777e012a29ca9a4d87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Jun 2023 07:13:48 -0700 Subject: [PATCH 64/91] Bump github.com/urfave/cli/v2 from 2.25.4 to 2.25.6 (#199) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.25.4 to 2.25.6. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.25.4...v2.25.6) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 97aac15a..23296753 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/mattn/goveralls v0.0.12 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.4 - github.com/urfave/cli/v2 v2.25.4 + github.com/urfave/cli/v2 v2.25.6 golang.org/x/text v0.9.0 golang.org/x/tools v0.9.3 golang.org/x/tools/cmd/cover v0.1.0-deprecated diff --git a/go.sum b/go.sum index 948cf8ed..3e39de4a 100644 --- a/go.sum +++ b/go.sum @@ -66,8 +66,8 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/urfave/cli/v2 v2.25.4 h1:HyYwPrTO3im9rYhUff/ZNs78eolxt0nJ4LN+9yJKSH4= -github.com/urfave/cli/v2 v2.25.4/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/urfave/cli/v2 v2.25.6 h1:yuSkgDSZfH3L1CjF2/5fNNg2KbM47pY2EvjBq4ESQnU= +github.com/urfave/cli/v2 v2.25.6/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= From 8edfa1dbe46359183778d8185b4975450cefcacc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 06:56:56 -0700 Subject: [PATCH 65/91] Bump golang.org/x/text from 0.9.0 to 0.10.0 (#200) Bumps [golang.org/x/text](https://github.com/golang/text) from 0.9.0 to 0.10.0. - [Release notes](https://github.com/golang/text/releases) - [Commits](https://github.com/golang/text/compare/v0.9.0...v0.10.0) --- updated-dependencies: - dependency-name: golang.org/x/text dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 23296753..246607d1 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.25.6 - golang.org/x/text v0.9.0 + golang.org/x/text v0.10.0 golang.org/x/tools v0.9.3 golang.org/x/tools/cmd/cover v0.1.0-deprecated ) diff --git a/go.sum b/go.sum index 3e39de4a..ce31125c 100644 --- a/go.sum +++ b/go.sum @@ -123,8 +123,9 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= From 9438fdbd5323448c9b5fff26f2afc7badb5b1f73 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 14:01:23 +0000 Subject: [PATCH 66/91] Bump golang.org/x/tools from 0.9.3 to 0.10.0 (#201) --- go.mod | 6 +++--- go.sum | 11 ++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index 246607d1..f02099e7 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.25.6 golang.org/x/text v0.10.0 - golang.org/x/tools v0.9.3 + golang.org/x/tools v0.10.0 golang.org/x/tools/cmd/cover v0.1.0-deprecated ) @@ -35,8 +35,8 @@ require ( github.com/spf13/cast v1.3.1 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect golang.org/x/crypto v0.3.0 // indirect - golang.org/x/mod v0.10.0 // indirect - golang.org/x/sys v0.8.0 // indirect + golang.org/x/mod v0.11.0 // indirect + golang.org/x/sys v0.9.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index ce31125c..be84607b 100644 --- a/go.sum +++ b/go.sum @@ -82,8 +82,9 @@ golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4 golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -111,8 +112,8 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -132,8 +133,8 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= -golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM= -golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= +golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= golang.org/x/tools/cmd/cover v0.1.0-deprecated h1:Rwy+mWYz6loAF+LnG1jHG/JWMHRMMC2/1XX3Ejkx9lA= golang.org/x/tools/cmd/cover v0.1.0-deprecated/go.mod h1:hMDiIvlpN1NoVgmjLjUJE9tMHyxHjFX7RuQ+rW12mSA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 9cab8cb2cebb955de5537323533f040a0a6f3c84 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jul 2023 05:32:19 -0700 Subject: [PATCH 67/91] Bump github.com/urfave/cli/v2 from 2.25.6 to 2.25.7 (#202) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.25.6 to 2.25.7. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.25.6...v2.25.7) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index f02099e7..02ee20c0 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/mattn/goveralls v0.0.12 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.4 - github.com/urfave/cli/v2 v2.25.6 + github.com/urfave/cli/v2 v2.25.7 golang.org/x/text v0.10.0 golang.org/x/tools v0.10.0 golang.org/x/tools/cmd/cover v0.1.0-deprecated diff --git a/go.sum b/go.sum index be84607b..2468a7e8 100644 --- a/go.sum +++ b/go.sum @@ -66,8 +66,8 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/urfave/cli/v2 v2.25.6 h1:yuSkgDSZfH3L1CjF2/5fNNg2KbM47pY2EvjBq4ESQnU= -github.com/urfave/cli/v2 v2.25.6/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= +github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= From 453e403010b5a943ee60e204117d290d02769570 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jul 2023 12:36:43 +0000 Subject: [PATCH 68/91] Bump golang.org/x/tools from 0.10.0 to 0.11.0 (#203) --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 02ee20c0..2eb46149 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.25.7 golang.org/x/text v0.10.0 - golang.org/x/tools v0.10.0 + golang.org/x/tools v0.11.0 golang.org/x/tools/cmd/cover v0.1.0-deprecated ) @@ -35,8 +35,8 @@ require ( github.com/spf13/cast v1.3.1 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect golang.org/x/crypto v0.3.0 // indirect - golang.org/x/mod v0.11.0 // indirect - golang.org/x/sys v0.9.0 // indirect + golang.org/x/mod v0.12.0 // indirect + golang.org/x/sys v0.10.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 2468a7e8..9b3d41ad 100644 --- a/go.sum +++ b/go.sum @@ -83,8 +83,8 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= -golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -112,8 +112,8 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -133,8 +133,8 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= -golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= -golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= +golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= golang.org/x/tools/cmd/cover v0.1.0-deprecated h1:Rwy+mWYz6loAF+LnG1jHG/JWMHRMMC2/1XX3Ejkx9lA= golang.org/x/tools/cmd/cover v0.1.0-deprecated/go.mod h1:hMDiIvlpN1NoVgmjLjUJE9tMHyxHjFX7RuQ+rW12mSA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From eaf68b410525fbc5bb50b3575d3fbe3b95dd7028 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jul 2023 12:40:51 +0000 Subject: [PATCH 69/91] Bump golang.org/x/text from 0.10.0 to 0.11.0 (#204) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2eb46149..fd1340bc 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.25.7 - golang.org/x/text v0.10.0 + golang.org/x/text v0.11.0 golang.org/x/tools v0.11.0 golang.org/x/tools/cmd/cover v0.1.0-deprecated ) diff --git a/go.sum b/go.sum index 9b3d41ad..48765e6d 100644 --- a/go.sum +++ b/go.sum @@ -125,8 +125,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= -golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= From bf63e108589bbd2327b13ec2c5da532aad234029 Mon Sep 17 00:00:00 2001 From: Skip Baney Date: Tue, 25 Jul 2023 18:24:56 -0500 Subject: [PATCH 70/91] feat: make enum comment available in templates (#206) --- example/user_template.tmpl | 3 ++ example/user_template_enum.go | 3 ++ example/user_template_test.go | 1 + .../Test118ExampleFileMoreOptions-1.18 | 5 ++- .../Test118ExampleFileMoreOptions-og | 44 ++++++++++++++++++- .../.snapshots/TestExampleFileMoreOptions | 44 ++++++++++++++++++- generator/generator.go | 12 +++-- 7 files changed, 105 insertions(+), 7 deletions(-) diff --git a/example/user_template.tmpl b/example/user_template.tmpl index 7aab62bd..b34e9f53 100644 --- a/example/user_template.tmpl +++ b/example/user_template.tmpl @@ -2,3 +2,6 @@ func Parse{{.enum.Name}}Example() bool { return true } +func Parse{{.enum.Name}}Description() string { + return `{{.enum.Comment}}` +} diff --git a/example/user_template_enum.go b/example/user_template_enum.go index 2a7479eb..6c4ee425 100644 --- a/example/user_template_enum.go +++ b/example/user_template_enum.go @@ -73,3 +73,6 @@ func ParseOceanColorGlobbedExample2() bool { func ParseOceanColorExample() bool { return true } +func ParseOceanColorDescription() string { + return `OceanColor is an enumeration of ocean colors that are allowed.` +} diff --git a/example/user_template_test.go b/example/user_template_test.go index 127ec076..14d363e3 100644 --- a/example/user_template_test.go +++ b/example/user_template_test.go @@ -11,6 +11,7 @@ import ( func TestUserTemplateColor(t *testing.T) { assert.Equal(t, OceanColor(0), OceanColorCerulean) + assert.Equal(t, "OceanColor is an enumeration of ocean colors that are allowed.", ParseOceanColorDescription()) assert.Equal(t, true, ParseOceanColorExample()) assert.Equal(t, true, ParseOceanColorGlobbedExample()) assert.Equal(t, true, ParseOceanColorGlobbedExample2()) diff --git a/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 b/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 index 97b12005..91e2661c 100644 --- a/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 +++ b/generator/.snapshots/Test118ExampleFileMoreOptions-1.18 @@ -1,4 +1,4 @@ -([]string) (len=186) { +([]string) (len=189) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -184,5 +184,8 @@ (string) (len=36) "func ParseChangeTypeExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=42) "func ParseChangeTypeDescription() string {", + (string) (len=50) "\treturn `ChangeType is a type of change detected.`", + (string) (len=1) "}", (string) "" } diff --git a/generator/.snapshots/Test118ExampleFileMoreOptions-og b/generator/.snapshots/Test118ExampleFileMoreOptions-og index 8dfd9566..598607dc 100644 --- a/generator/.snapshots/Test118ExampleFileMoreOptions-og +++ b/generator/.snapshots/Test118ExampleFileMoreOptions-og @@ -1,4 +1,4 @@ -([]string) (len=2616) { +([]string) (len=2658) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -184,6 +184,9 @@ (string) (len=32) "func ParseAnimalExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=38) "func ParseAnimalDescription() string {", + (string) (len=18) "\treturn `Animal x`", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=50) "\t// CasesTest_lower is a Cases of type Test_lower.", @@ -355,6 +358,9 @@ (string) (len=31) "func ParseCasesExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=37) "func ParseCasesDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=40) "\t// ColorBlack is a Color of type Black.", @@ -550,6 +556,9 @@ (string) (len=31) "func ParseColorExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=37) "func ParseColorDescription() string {", + (string) (len=61) "\treturn `Color is an enumeration of colors that are allowed.`", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=62) "\t// ColorWithCommentBlack is a ColorWithComment of type Black.", @@ -746,6 +755,9 @@ (string) (len=42) "func ParseColorWithCommentExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=48) "func ParseColorWithCommentDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=64) "\t// ColorWithComment2Black is a ColorWithComment2 of type Black.", @@ -942,6 +954,9 @@ (string) (len=43) "func ParseColorWithComment2Example() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=49) "func ParseColorWithComment2Description() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=64) "\t// ColorWithComment3Black is a ColorWithComment3 of type Black.", @@ -1157,6 +1172,9 @@ (string) (len=43) "func ParseColorWithComment3Example() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=49) "func ParseColorWithComment3Description() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=18) "\t// Skipped value.", @@ -1371,6 +1389,9 @@ (string) (len=43) "func ParseColorWithComment4Example() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=49) "func ParseColorWithComment4Description() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=52) "\t// Enum64bitUnknown is a Enum64bit of type Unknown.", @@ -1614,6 +1635,9 @@ (string) (len=35) "func ParseEnum64bitExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=41) "func ParseEnum64bitDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=42) "\t// ModelToyota is a Model of type Toyota.", @@ -1789,6 +1813,9 @@ (string) (len=31) "func ParseModelExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=37) "func ParseModelDescription() string {", + (string) (len=17) "\treturn `Model x`", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=60) "\t// NonASCIIПродам is a NonASCII of type Продам.", @@ -1960,6 +1987,9 @@ (string) (len=34) "func ParseNonASCIIExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=40) "func ParseNonASCIIDescription() string {", + (string) (len=18) "\treturn `NonASCII`", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=61) "\t// SanitizingTestHyphen is a Sanitizing of type Test-Hyphen.", @@ -2155,6 +2185,9 @@ (string) (len=36) "func ParseSanitizingExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=42) "func ParseSanitizingDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=36) "\t// SodaCoke is a Soda of type Coke.", @@ -2326,6 +2359,9 @@ (string) (len=30) "func ParseSodaExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=36) "func ParseSodaDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=68) "\t// StartNotZeroStartWithNum is a StartNotZero of type StartWithNum.", @@ -2491,6 +2527,9 @@ (string) (len=38) "func ParseStartNotZeroExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=44) "func ParseStartNotZeroDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=52) "\t// StringEnumRandom is a StringEnum of type random.", @@ -2614,5 +2653,8 @@ (string) (len=36) "func ParseStringEnumExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=42) "func ParseStringEnumDescription() string {", + (string) (len=21) "\treturn `StringEnum.`", + (string) (len=1) "}", (string) "" } diff --git a/generator/.snapshots/TestExampleFileMoreOptions b/generator/.snapshots/TestExampleFileMoreOptions index 8dfd9566..598607dc 100644 --- a/generator/.snapshots/TestExampleFileMoreOptions +++ b/generator/.snapshots/TestExampleFileMoreOptions @@ -1,4 +1,4 @@ -([]string) (len=2616) { +([]string) (len=2658) { (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", (string) (len=13) "// Version: -", (string) (len=14) "// Revision: -", @@ -184,6 +184,9 @@ (string) (len=32) "func ParseAnimalExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=38) "func ParseAnimalDescription() string {", + (string) (len=18) "\treturn `Animal x`", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=50) "\t// CasesTest_lower is a Cases of type Test_lower.", @@ -355,6 +358,9 @@ (string) (len=31) "func ParseCasesExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=37) "func ParseCasesDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=40) "\t// ColorBlack is a Color of type Black.", @@ -550,6 +556,9 @@ (string) (len=31) "func ParseColorExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=37) "func ParseColorDescription() string {", + (string) (len=61) "\treturn `Color is an enumeration of colors that are allowed.`", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=62) "\t// ColorWithCommentBlack is a ColorWithComment of type Black.", @@ -746,6 +755,9 @@ (string) (len=42) "func ParseColorWithCommentExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=48) "func ParseColorWithCommentDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=64) "\t// ColorWithComment2Black is a ColorWithComment2 of type Black.", @@ -942,6 +954,9 @@ (string) (len=43) "func ParseColorWithComment2Example() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=49) "func ParseColorWithComment2Description() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=64) "\t// ColorWithComment3Black is a ColorWithComment3 of type Black.", @@ -1157,6 +1172,9 @@ (string) (len=43) "func ParseColorWithComment3Example() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=49) "func ParseColorWithComment3Description() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=18) "\t// Skipped value.", @@ -1371,6 +1389,9 @@ (string) (len=43) "func ParseColorWithComment4Example() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=49) "func ParseColorWithComment4Description() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=52) "\t// Enum64bitUnknown is a Enum64bit of type Unknown.", @@ -1614,6 +1635,9 @@ (string) (len=35) "func ParseEnum64bitExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=41) "func ParseEnum64bitDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=42) "\t// ModelToyota is a Model of type Toyota.", @@ -1789,6 +1813,9 @@ (string) (len=31) "func ParseModelExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=37) "func ParseModelDescription() string {", + (string) (len=17) "\treturn `Model x`", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=60) "\t// NonASCIIПродам is a NonASCII of type Продам.", @@ -1960,6 +1987,9 @@ (string) (len=34) "func ParseNonASCIIExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=40) "func ParseNonASCIIDescription() string {", + (string) (len=18) "\treturn `NonASCII`", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=61) "\t// SanitizingTestHyphen is a Sanitizing of type Test-Hyphen.", @@ -2155,6 +2185,9 @@ (string) (len=36) "func ParseSanitizingExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=42) "func ParseSanitizingDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=36) "\t// SodaCoke is a Soda of type Coke.", @@ -2326,6 +2359,9 @@ (string) (len=30) "func ParseSodaExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=36) "func ParseSodaDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=68) "\t// StartNotZeroStartWithNum is a StartNotZero of type StartWithNum.", @@ -2491,6 +2527,9 @@ (string) (len=38) "func ParseStartNotZeroExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=44) "func ParseStartNotZeroDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", (string) "", (string) (len=7) "const (", (string) (len=52) "\t// StringEnumRandom is a StringEnum of type random.", @@ -2614,5 +2653,8 @@ (string) (len=36) "func ParseStringEnumExample() bool {", (string) (len=12) "\treturn true", (string) (len=1) "}", + (string) (len=42) "func ParseStringEnumDescription() string {", + (string) (len=21) "\treturn `StringEnum.`", + (string) (len=1) "}", (string) "" } diff --git a/generator/generator.go b/generator/generator.go index 84668752..e51000ee 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -59,10 +59,11 @@ type Generator struct { // Enum holds data for a discovered enum in the parsed source type Enum struct { - Name string - Prefix string - Type string - Values []EnumValue + Name string + Prefix string + Type string + Values []EnumValue + Comment string } // EnumValue holds the individual data for each enum value within the found enum. @@ -385,6 +386,9 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { enum.Prefix = g.prefix + enum.Prefix } + commentPreEnumDecl, _, _ := strings.Cut(ts.Doc.Text(), `ENUM(`) + enum.Comment = strings.TrimSpace(commentPreEnumDecl) + enumDecl := getEnumDeclFromComments(ts.Doc.List) if enumDecl == "" { return nil, errors.New("failed parsing enum") From 814ae9e1413e9cc4c6108bbb5b31de0ed018c6f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 6 Aug 2023 19:56:42 -0700 Subject: [PATCH 71/91] Bump golang.org/x/tools from 0.11.0 to 0.11.1 (#208) Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.11.0 to 0.11.1. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.11.0...v0.11.1) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index fd1340bc..d06a15b8 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.25.7 golang.org/x/text v0.11.0 - golang.org/x/tools v0.11.0 + golang.org/x/tools v0.11.1 golang.org/x/tools/cmd/cover v0.1.0-deprecated ) diff --git a/go.sum b/go.sum index 48765e6d..d13c1ea8 100644 --- a/go.sum +++ b/go.sum @@ -133,8 +133,8 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= -golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= -golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= +golang.org/x/tools v0.11.1 h1:ojD5zOW8+7dOGzdnNgersm8aPfcDjhMp12UfG93NIMc= +golang.org/x/tools v0.11.1/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= golang.org/x/tools/cmd/cover v0.1.0-deprecated h1:Rwy+mWYz6loAF+LnG1jHG/JWMHRMMC2/1XX3Ejkx9lA= golang.org/x/tools/cmd/cover v0.1.0-deprecated/go.mod h1:hMDiIvlpN1NoVgmjLjUJE9tMHyxHjFX7RuQ+rW12mSA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From d1e1e68448ba52488d7b4893947a16971c8cc427 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Aug 2023 03:00:04 +0000 Subject: [PATCH 72/91] Bump golang.org/x/text from 0.11.0 to 0.12.0 (#209) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d06a15b8..44ae7096 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.25.7 - golang.org/x/text v0.11.0 + golang.org/x/text v0.12.0 golang.org/x/tools v0.11.1 golang.org/x/tools/cmd/cover v0.1.0-deprecated ) diff --git a/go.sum b/go.sum index d13c1ea8..c4cfb22b 100644 --- a/go.sum +++ b/go.sum @@ -125,8 +125,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= From eb06a592268829d61305a3e58344451540ddcfd8 Mon Sep 17 00:00:00 2001 From: Ramil Aleshkin Date: Fri, 15 Sep 2023 23:57:09 +0400 Subject: [PATCH 73/91] feat: add forceupper option for uppercased strings values of enum (#213) Co-authored-by: Ramil Aleshkin --- .gitignore | 1 + README.md | 1 + example/force_upper.go | 9 + example/force_upper_enum.go | 59 + example/force_upper_test.go | 42 + .../TestExampleFileMoreOptionsWithForceUpper | 2525 +++++++++++++++++ generator/enum.tmpl | 2 +- generator/generator.go | 8 + generator/generator_test.go | 22 + generator/template_funcs.go | 5 +- main.go | 9 + 11 files changed, 2681 insertions(+), 2 deletions(-) create mode 100644 example/force_upper.go create mode 100644 example/force_upper_enum.go create mode 100644 example/force_upper_test.go create mode 100644 generator/.snapshots/TestExampleFileMoreOptionsWithForceUpper diff --git a/.gitignore b/.gitignore index 67a2ddaf..70019a2a 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ coverage.out coverage.html dist/ +.idea/ \ No newline at end of file diff --git a/README.md b/README.md index d6b1f04d..a736c57e 100644 --- a/README.md +++ b/README.md @@ -161,6 +161,7 @@ GLOBAL OPTIONS: --alias value, -a value [ --alias value, -a value ] Adds or replaces aliases for a non alphanumeric value that needs to be accounted for. [Format should be "key:value,key2:value2", or specify multiple entries, or both!] --mustparse Adds a Must version of the Parse that will panic on failure. (default: false) --forcelower Forces a camel cased comment to generate lowercased names. (default: false) + --forceupper Forces a camel cased comment to generate uppercased names. (default: false) --nocomments Removes auto generated comments. If you add your own comments, these will still be created. (default: false) --buildtag value, -b value [ --buildtag value, -b value ] Adds build tags to a generated enum file. --help, -h show help diff --git a/example/force_upper.go b/example/force_upper.go new file mode 100644 index 00000000..38e5ac3c --- /dev/null +++ b/example/force_upper.go @@ -0,0 +1,9 @@ +//go:generate ../bin/go-enum --forceupper -b example + +package example + +// ENUM( +// DataSwap, +// BootNode, +// ) +type ForceUpperType int diff --git a/example/force_upper_enum.go b/example/force_upper_enum.go new file mode 100644 index 00000000..44cd8928 --- /dev/null +++ b/example/force_upper_enum.go @@ -0,0 +1,59 @@ +// Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example + +//go:build example +// +build example + +package example + +import ( + "errors" + "fmt" +) + +const ( + // ForceUpperTypeDataSwap is a ForceUpperType of type DataSwap. + ForceUpperTypeDataSwap ForceUpperType = iota + // ForceUpperTypeBootNode is a ForceUpperType of type BootNode. + ForceUpperTypeBootNode +) + +var ErrInvalidForceUpperType = errors.New("not a valid ForceUpperType") + +const _ForceUpperTypeName = "DATASWAPBOOTNODE" + +var _ForceUpperTypeMap = map[ForceUpperType]string{ + ForceUpperTypeDataSwap: _ForceUpperTypeName[0:8], + ForceUpperTypeBootNode: _ForceUpperTypeName[8:16], +} + +// String implements the Stringer interface. +func (x ForceUpperType) String() string { + if str, ok := _ForceUpperTypeMap[x]; ok { + return str + } + return fmt.Sprintf("ForceUpperType(%d)", x) +} + +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x ForceUpperType) IsValid() bool { + _, ok := _ForceUpperTypeMap[x] + return ok +} + +var _ForceUpperTypeValue = map[string]ForceUpperType{ + _ForceUpperTypeName[0:8]: ForceUpperTypeDataSwap, + _ForceUpperTypeName[8:16]: ForceUpperTypeBootNode, +} + +// ParseForceUpperType attempts to convert a string to a ForceUpperType. +func ParseForceUpperType(name string) (ForceUpperType, error) { + if x, ok := _ForceUpperTypeValue[name]; ok { + return x, nil + } + return ForceUpperType(0), fmt.Errorf("%s is %w", name, ErrInvalidForceUpperType) +} diff --git a/example/force_upper_test.go b/example/force_upper_test.go new file mode 100644 index 00000000..6bd6bbcd --- /dev/null +++ b/example/force_upper_test.go @@ -0,0 +1,42 @@ +//go:build example +// +build example + +package example + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestForceUpperString(t *testing.T) { + tests := map[string]struct { + input string + output ForceUpperType + }{ + "dataswap": { + input: `DATASWAP`, + output: ForceUpperTypeDataSwap, + }, + "bootnode": { + input: `BOOTNODE`, + output: ForceUpperTypeBootNode, + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + output, err := ParseForceUpperType(tc.input) + assert.NoError(t, err) + assert.Equal(t, tc.output, output) + + assert.Equal(t, tc.input, output.String()) + }) + } + + t.Run("failures", func(t *testing.T) { + assert.Equal(t, "ForceUpperType(99)", ForceUpperType(99).String()) + _, err := ParseForceUpperType("-1") + assert.Error(t, err) + }) +} diff --git a/generator/.snapshots/TestExampleFileMoreOptionsWithForceUpper b/generator/.snapshots/TestExampleFileMoreOptionsWithForceUpper new file mode 100644 index 00000000..c1e7a86f --- /dev/null +++ b/generator/.snapshots/TestExampleFileMoreOptionsWithForceUpper @@ -0,0 +1,2525 @@ +([]string) (len=2523) { + (string) (len=41) "// Code generated by go-enum DO NOT EDIT.", + (string) (len=13) "// Version: -", + (string) (len=14) "// Revision: -", + (string) (len=16) "// Build Date: -", + (string) (len=14) "// Built By: -", + (string) "", + (string) (len=17) "package generator", + (string) "", + (string) (len=8) "import (", + (string) (len=22) "\t\"database/sql/driver\"", + (string) (len=9) "\t\"errors\"", + (string) (len=6) "\t\"fmt\"", + (string) (len=10) "\t\"strings\"", + (string) (len=1) ")", + (string) "", + (string) (len=7) "const (", + (string) (len=38) "\t// AnimalCat is a Animal of type Cat.", + (string) (len=24) "\tAnimalCat Animal = iota", + (string) (len=38) "\t// AnimalDog is a Animal of type Dog.", + (string) (len=10) "\tAnimalDog", + (string) (len=40) "\t// AnimalFish is a Animal of type Fish.", + (string) (len=11) "\tAnimalFish", + (string) (len=1) ")", + (string) "", + (string) (len=99) "var ErrInvalidAnimal = fmt.Errorf(\"not a valid Animal, try [%s]\", strings.Join(_AnimalNames, \", \"))", + (string) "", + (string) (len=32) "const _AnimalName = \"CATDOGFISH\"", + (string) "", + (string) (len=28) "var _AnimalNames = []string{", + (string) (len=18) "\t_AnimalName[0:3],", + (string) (len=18) "\t_AnimalName[3:6],", + (string) (len=19) "\t_AnimalName[6:10],", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// AnimalNames returns a list of possible string values of Animal.", + (string) (len=29) "func AnimalNames() []string {", + (string) (len=41) "\ttmp := make([]string, len(_AnimalNames))", + (string) (len=24) "\tcopy(tmp, _AnimalNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _AnimalMap = map[Animal]string{", + (string) (len=30) "\tAnimalCat: _AnimalName[0:3],", + (string) (len=30) "\tAnimalDog: _AnimalName[3:6],", + (string) (len=31) "\tAnimalFish: _AnimalName[6:10],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=33) "func (x Animal) String() string {", + (string) (len=34) "\tif str, ok := _AnimalMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=36) "\treturn fmt.Sprintf(\"Animal(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=32) "func (x Animal) IsValid() bool {", + (string) (len=23) "\t_, ok := _AnimalMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", + (string) (len=37) "var _AnimalValue = map[string]Animal{", + (string) (len=30) "\t_AnimalName[0:3]: AnimalCat,", + (string) (len=30) "\t_AnimalName[3:6]: AnimalDog,", + (string) (len=31) "\t_AnimalName[6:10]: AnimalFish,", + (string) (len=1) "}", + (string) "", + (string) (len=56) "// ParseAnimal attempts to convert a string to a Animal.", + (string) (len=47) "func ParseAnimal(name string) (Animal, error) {", + (string) (len=37) "\tif x, ok := _AnimalValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=65) "\treturn Animal(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidAnimal)", + (string) (len=1) "}", + (string) "", + (string) (len=77) "// MustParseAnimal converts a string to a Animal, and panics if is not valid.", + (string) (len=42) "func MustParseAnimal(name string) Animal {", + (string) (len=30) "\tval, err := ParseAnimal(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=47) "func (x Animal) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=51) "func (x *Animal) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=30) "\ttmp, err := ParseAnimal(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=92) "var errAnimalNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=54) "func (x *Animal) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=16) "\t\t*x = Animal(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=13) "\tcase string:", + (string) (len=26) "\t\t*x, err = ParseAnimal(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=34) "\t\t*x, err = ParseAnimal(string(v))", + (string) (len=13) "\tcase Animal:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=14) "\tcase *Animal:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=16) "\t\t*x = Animal(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", + (string) (len=3) "\t\t}", + (string) (len=17) "\t\t*x = Animal(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=25) "\t\t\treturn errAnimalNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x, err = ParseAnimal(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=47) "func (x Animal) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=32) "func ParseAnimalExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) (len=38) "func ParseAnimalDescription() string {", + (string) (len=18) "\treturn `Animal x`", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=50) "\t// CasesTest_lower is a Cases of type Test_lower.", + (string) (len=29) "\tCasesTest_lower Cases = iota", + (string) (len=54) "\t// CasesTest_capital is a Cases of type Test_capital.", + (string) (len=18) "\tCasesTest_capital", + (string) (len=72) "\t// CasesAnotherLowerCaseStart is a Cases of type AnotherLowerCaseStart.", + (string) (len=27) "\tCasesAnotherLowerCaseStart", + (string) (len=1) ")", + (string) "", + (string) (len=96) "var ErrInvalidCases = fmt.Errorf(\"not a valid Cases, try [%s]\", strings.Join(_CasesNames, \", \"))", + (string) "", + (string) (len=64) "const _CasesName = \"TEST_LOWERTEST_CAPITALANOTHERLOWERCASESTART\"", + (string) "", + (string) (len=27) "var _CasesNames = []string{", + (string) (len=18) "\t_CasesName[0:10],", + (string) (len=19) "\t_CasesName[10:22],", + (string) (len=19) "\t_CasesName[22:43],", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// CasesNames returns a list of possible string values of Cases.", + (string) (len=28) "func CasesNames() []string {", + (string) (len=40) "\ttmp := make([]string, len(_CasesNames))", + (string) (len=23) "\tcopy(tmp, _CasesNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _CasesMap = map[Cases]string{", + (string) (len=46) "\tCasesTest_lower: _CasesName[0:10],", + (string) (len=47) "\tCasesTest_capital: _CasesName[10:22],", + (string) (len=47) "\tCasesAnotherLowerCaseStart: _CasesName[22:43],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Cases) String() string {", + (string) (len=33) "\tif str, ok := _CasesMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Cases(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Cases) IsValid() bool {", + (string) (len=22) "\t_, ok := _CasesMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _CasesValue = map[string]Cases{", + (string) (len=36) "\t_CasesName[0:10]: CasesTest_lower,", + (string) (len=38) "\t_CasesName[10:22]: CasesTest_capital,", + (string) (len=47) "\t_CasesName[22:43]: CasesAnotherLowerCaseStart,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseCases attempts to convert a string to a Cases.", + (string) (len=45) "func ParseCases(name string) (Cases, error) {", + (string) (len=36) "\tif x, ok := _CasesValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=63) "\treturn Cases(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidCases)", + (string) (len=1) "}", + (string) "", + (string) (len=75) "// MustParseCases converts a string to a Cases, and panics if is not valid.", + (string) (len=40) "func MustParseCases(name string) Cases {", + (string) (len=29) "\tval, err := ParseCases(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Cases) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Cases) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseCases(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=91) "var errCasesNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=53) "func (x *Cases) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=15) "\t\t*x = Cases(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=13) "\tcase string:", + (string) (len=25) "\t\t*x, err = ParseCases(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=33) "\t\t*x, err = ParseCases(string(v))", + (string) (len=12) "\tcase Cases:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=13) "\tcase *Cases:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errCasesNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errCasesNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errCasesNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\t*x = Cases(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errCasesNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errCasesNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errCasesNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Cases(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errCasesNilPtr", + (string) (len=3) "\t\t}", + (string) (len=26) "\t\t*x, err = ParseCases(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=46) "func (x Cases) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=31) "func ParseCasesExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) (len=37) "func ParseCasesDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=40) "\t// ColorBlack is a Color of type Black.", + (string) (len=24) "\tColorBlack Color = iota", + (string) (len=40) "\t// ColorWhite is a Color of type White.", + (string) (len=11) "\tColorWhite", + (string) (len=36) "\t// ColorRed is a Color of type Red.", + (string) (len=9) "\tColorRed", + (string) (len=40) "\t// ColorGreen is a Color of type Green.", + (string) (len=11) "\tColorGreen", + (string) (len=38) "\t// ColorBlue is a Color of type Blue.", + (string) (len=28) "\tColorBlue Color = iota + 29", + (string) (len=38) "\t// ColorGrey is a Color of type Grey.", + (string) (len=10) "\tColorGrey", + (string) (len=42) "\t// ColorYellow is a Color of type Yellow.", + (string) (len=12) "\tColorYellow", + (string) (len=1) ")", + (string) "", + (string) (len=96) "var ErrInvalidColor = fmt.Errorf(\"not a valid Color, try [%s]\", strings.Join(_ColorNames, \", \"))", + (string) "", + (string) (len=53) "const _ColorName = \"BLACKWHITEREDGREENBLUEGREYYELLOW\"", + (string) "", + (string) (len=27) "var _ColorNames = []string{", + (string) (len=17) "\t_ColorName[0:5],", + (string) (len=18) "\t_ColorName[5:10],", + (string) (len=19) "\t_ColorName[10:13],", + (string) (len=19) "\t_ColorName[13:18],", + (string) (len=19) "\t_ColorName[18:22],", + (string) (len=19) "\t_ColorName[22:26],", + (string) (len=19) "\t_ColorName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ColorNames returns a list of possible string values of Color.", + (string) (len=28) "func ColorNames() []string {", + (string) (len=40) "\ttmp := make([]string, len(_ColorNames))", + (string) (len=23) "\tcopy(tmp, _ColorNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _ColorMap = map[Color]string{", + (string) (len=30) "\tColorBlack: _ColorName[0:5],", + (string) (len=31) "\tColorWhite: _ColorName[5:10],", + (string) (len=32) "\tColorRed: _ColorName[10:13],", + (string) (len=32) "\tColorGreen: _ColorName[13:18],", + (string) (len=32) "\tColorBlue: _ColorName[18:22],", + (string) (len=32) "\tColorGrey: _ColorName[22:26],", + (string) (len=32) "\tColorYellow: _ColorName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Color) String() string {", + (string) (len=33) "\tif str, ok := _ColorMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Color(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Color) IsValid() bool {", + (string) (len=22) "\t_, ok := _ColorMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _ColorValue = map[string]Color{", + (string) (len=31) "\t_ColorName[0:5]: ColorBlack,", + (string) (len=31) "\t_ColorName[5:10]: ColorWhite,", + (string) (len=29) "\t_ColorName[10:13]: ColorRed,", + (string) (len=31) "\t_ColorName[13:18]: ColorGreen,", + (string) (len=30) "\t_ColorName[18:22]: ColorBlue,", + (string) (len=30) "\t_ColorName[22:26]: ColorGrey,", + (string) (len=32) "\t_ColorName[26:32]: ColorYellow,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseColor attempts to convert a string to a Color.", + (string) (len=45) "func ParseColor(name string) (Color, error) {", + (string) (len=36) "\tif x, ok := _ColorValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=63) "\treturn Color(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColor)", + (string) (len=1) "}", + (string) "", + (string) (len=75) "// MustParseColor converts a string to a Color, and panics if is not valid.", + (string) (len=40) "func MustParseColor(name string) Color {", + (string) (len=29) "\tval, err := ParseColor(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Color) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Color) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseColor(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=91) "var errColorNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=53) "func (x *Color) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=15) "\t\t*x = Color(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=13) "\tcase string:", + (string) (len=25) "\t\t*x, err = ParseColor(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=33) "\t\t*x, err = ParseColor(string(v))", + (string) (len=12) "\tcase Color:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=13) "\tcase *Color:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errColorNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errColorNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errColorNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\t*x = Color(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errColorNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errColorNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errColorNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Color(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errColorNilPtr", + (string) (len=3) "\t\t}", + (string) (len=26) "\t\t*x, err = ParseColor(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=46) "func (x Color) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=31) "func ParseColorExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) (len=37) "func ParseColorDescription() string {", + (string) (len=61) "\treturn `Color is an enumeration of colors that are allowed.`", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=62) "\t// ColorWithCommentBlack is a ColorWithComment of type Black.", + (string) (len=46) "\tColorWithCommentBlack ColorWithComment = iota", + (string) (len=62) "\t// ColorWithCommentWhite is a ColorWithComment of type White.", + (string) (len=22) "\tColorWithCommentWhite", + (string) (len=58) "\t// ColorWithCommentRed is a ColorWithComment of type Red.", + (string) (len=20) "\tColorWithCommentRed", + (string) (len=62) "\t// ColorWithCommentGreen is a ColorWithComment of type Green.", + (string) (len=22) "\tColorWithCommentGreen", + (string) (len=60) "\t// ColorWithCommentBlue is a ColorWithComment of type Blue.", + (string) (len=24) "\t// Blue starts with 33.", + (string) (len=50) "\tColorWithCommentBlue ColorWithComment = iota + 29", + (string) (len=60) "\t// ColorWithCommentGrey is a ColorWithComment of type Grey.", + (string) (len=21) "\tColorWithCommentGrey", + (string) (len=64) "\t// ColorWithCommentYellow is a ColorWithComment of type Yellow.", + (string) (len=23) "\tColorWithCommentYellow", + (string) (len=1) ")", + (string) "", + (string) (len=129) "var ErrInvalidColorWithComment = fmt.Errorf(\"not a valid ColorWithComment, try [%s]\", strings.Join(_ColorWithCommentNames, \", \"))", + (string) "", + (string) (len=64) "const _ColorWithCommentName = \"BLACKWHITEREDGREENBLUEGREYYELLOW\"", + (string) "", + (string) (len=38) "var _ColorWithCommentNames = []string{", + (string) (len=28) "\t_ColorWithCommentName[0:5],", + (string) (len=29) "\t_ColorWithCommentName[5:10],", + (string) (len=30) "\t_ColorWithCommentName[10:13],", + (string) (len=30) "\t_ColorWithCommentName[13:18],", + (string) (len=30) "\t_ColorWithCommentName[18:22],", + (string) (len=30) "\t_ColorWithCommentName[22:26],", + (string) (len=30) "\t_ColorWithCommentName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=86) "// ColorWithCommentNames returns a list of possible string values of ColorWithComment.", + (string) (len=39) "func ColorWithCommentNames() []string {", + (string) (len=51) "\ttmp := make([]string, len(_ColorWithCommentNames))", + (string) (len=34) "\tcopy(tmp, _ColorWithCommentNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=55) "var _ColorWithCommentMap = map[ColorWithComment]string{", + (string) (len=52) "\tColorWithCommentBlack: _ColorWithCommentName[0:5],", + (string) (len=53) "\tColorWithCommentWhite: _ColorWithCommentName[5:10],", + (string) (len=54) "\tColorWithCommentRed: _ColorWithCommentName[10:13],", + (string) (len=54) "\tColorWithCommentGreen: _ColorWithCommentName[13:18],", + (string) (len=54) "\tColorWithCommentBlue: _ColorWithCommentName[18:22],", + (string) (len=54) "\tColorWithCommentGrey: _ColorWithCommentName[22:26],", + (string) (len=54) "\tColorWithCommentYellow: _ColorWithCommentName[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=43) "func (x ColorWithComment) String() string {", + (string) (len=44) "\tif str, ok := _ColorWithCommentMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=46) "\treturn fmt.Sprintf(\"ColorWithComment(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=42) "func (x ColorWithComment) IsValid() bool {", + (string) (len=33) "\t_, ok := _ColorWithCommentMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithCommentValue = map[string]ColorWithComment{", + (string) (len=53) "\t_ColorWithCommentName[0:5]: ColorWithCommentBlack,", + (string) (len=53) "\t_ColorWithCommentName[5:10]: ColorWithCommentWhite,", + (string) (len=51) "\t_ColorWithCommentName[10:13]: ColorWithCommentRed,", + (string) (len=53) "\t_ColorWithCommentName[13:18]: ColorWithCommentGreen,", + (string) (len=52) "\t_ColorWithCommentName[18:22]: ColorWithCommentBlue,", + (string) (len=52) "\t_ColorWithCommentName[22:26]: ColorWithCommentGrey,", + (string) (len=54) "\t_ColorWithCommentName[26:32]: ColorWithCommentYellow,", + (string) (len=1) "}", + (string) "", + (string) (len=76) "// ParseColorWithComment attempts to convert a string to a ColorWithComment.", + (string) (len=67) "func ParseColorWithComment(name string) (ColorWithComment, error) {", + (string) (len=47) "\tif x, ok := _ColorWithCommentValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=85) "\treturn ColorWithComment(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment)", + (string) (len=1) "}", + (string) "", + (string) (len=97) "// MustParseColorWithComment converts a string to a ColorWithComment, and panics if is not valid.", + (string) (len=62) "func MustParseColorWithComment(name string) ColorWithComment {", + (string) (len=40) "\tval, err := ParseColorWithComment(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=57) "func (x ColorWithComment) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=61) "func (x *ColorWithComment) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=40) "\ttmp, err := ParseColorWithComment(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=102) "var errColorWithCommentNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=64) "func (x *ColorWithComment) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=26) "\t\t*x = ColorWithComment(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=13) "\tcase string:", + (string) (len=36) "\t\t*x, err = ParseColorWithComment(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=44) "\t\t*x, err = ParseColorWithComment(string(v))", + (string) (len=23) "\tcase ColorWithComment:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=24) "\tcase *ColorWithComment:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=26) "\t\t*x = ColorWithComment(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", + (string) (len=3) "\t\t}", + (string) (len=27) "\t\t*x = ColorWithComment(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=35) "\t\t\treturn errColorWithCommentNilPtr", + (string) (len=3) "\t\t}", + (string) (len=37) "\t\t*x, err = ParseColorWithComment(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=57) "func (x ColorWithComment) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=42) "func ParseColorWithCommentExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) (len=48) "func ParseColorWithCommentDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=64) "\t// ColorWithComment2Black is a ColorWithComment2 of type Black.", + (string) (len=48) "\tColorWithComment2Black ColorWithComment2 = iota", + (string) (len=64) "\t// ColorWithComment2White is a ColorWithComment2 of type White.", + (string) (len=23) "\tColorWithComment2White", + (string) (len=60) "\t// ColorWithComment2Red is a ColorWithComment2 of type Red.", + (string) (len=21) "\tColorWithComment2Red", + (string) (len=64) "\t// ColorWithComment2Green is a ColorWithComment2 of type Green.", + (string) (len=23) "\tColorWithComment2Green", + (string) (len=62) "\t// ColorWithComment2Blue is a ColorWithComment2 of type Blue.", + (string) (len=23) "\t// Blue starts with 33", + (string) (len=52) "\tColorWithComment2Blue ColorWithComment2 = iota + 29", + (string) (len=62) "\t// ColorWithComment2Grey is a ColorWithComment2 of type Grey.", + (string) (len=22) "\tColorWithComment2Grey", + (string) (len=66) "\t// ColorWithComment2Yellow is a ColorWithComment2 of type Yellow.", + (string) (len=24) "\tColorWithComment2Yellow", + (string) (len=1) ")", + (string) "", + (string) (len=132) "var ErrInvalidColorWithComment2 = fmt.Errorf(\"not a valid ColorWithComment2, try [%s]\", strings.Join(_ColorWithComment2Names, \", \"))", + (string) "", + (string) (len=65) "const _ColorWithComment2Name = \"BLACKWHITEREDGREENBLUEGREYYELLOW\"", + (string) "", + (string) (len=39) "var _ColorWithComment2Names = []string{", + (string) (len=29) "\t_ColorWithComment2Name[0:5],", + (string) (len=30) "\t_ColorWithComment2Name[5:10],", + (string) (len=31) "\t_ColorWithComment2Name[10:13],", + (string) (len=31) "\t_ColorWithComment2Name[13:18],", + (string) (len=31) "\t_ColorWithComment2Name[18:22],", + (string) (len=31) "\t_ColorWithComment2Name[22:26],", + (string) (len=31) "\t_ColorWithComment2Name[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=88) "// ColorWithComment2Names returns a list of possible string values of ColorWithComment2.", + (string) (len=40) "func ColorWithComment2Names() []string {", + (string) (len=52) "\ttmp := make([]string, len(_ColorWithComment2Names))", + (string) (len=35) "\tcopy(tmp, _ColorWithComment2Names)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithComment2Map = map[ColorWithComment2]string{", + (string) (len=54) "\tColorWithComment2Black: _ColorWithComment2Name[0:5],", + (string) (len=55) "\tColorWithComment2White: _ColorWithComment2Name[5:10],", + (string) (len=56) "\tColorWithComment2Red: _ColorWithComment2Name[10:13],", + (string) (len=56) "\tColorWithComment2Green: _ColorWithComment2Name[13:18],", + (string) (len=56) "\tColorWithComment2Blue: _ColorWithComment2Name[18:22],", + (string) (len=56) "\tColorWithComment2Grey: _ColorWithComment2Name[22:26],", + (string) (len=56) "\tColorWithComment2Yellow: _ColorWithComment2Name[26:32],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment2) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment2Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment2(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment2) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment2Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment2Value = map[string]ColorWithComment2{", + (string) (len=55) "\t_ColorWithComment2Name[0:5]: ColorWithComment2Black,", + (string) (len=55) "\t_ColorWithComment2Name[5:10]: ColorWithComment2White,", + (string) (len=53) "\t_ColorWithComment2Name[10:13]: ColorWithComment2Red,", + (string) (len=55) "\t_ColorWithComment2Name[13:18]: ColorWithComment2Green,", + (string) (len=54) "\t_ColorWithComment2Name[18:22]: ColorWithComment2Blue,", + (string) (len=54) "\t_ColorWithComment2Name[22:26]: ColorWithComment2Grey,", + (string) (len=56) "\t_ColorWithComment2Name[26:32]: ColorWithComment2Yellow,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment2 attempts to convert a string to a ColorWithComment2.", + (string) (len=69) "func ParseColorWithComment2(name string) (ColorWithComment2, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment2Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=87) "\treturn ColorWithComment2(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment2)", + (string) (len=1) "}", + (string) "", + (string) (len=99) "// MustParseColorWithComment2 converts a string to a ColorWithComment2, and panics if is not valid.", + (string) (len=64) "func MustParseColorWithComment2(name string) ColorWithComment2 {", + (string) (len=41) "\tval, err := ParseColorWithComment2(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment2) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment2) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment2(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=103) "var errColorWithComment2NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=65) "func (x *ColorWithComment2) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=27) "\t\t*x = ColorWithComment2(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=13) "\tcase string:", + (string) (len=37) "\t\t*x, err = ParseColorWithComment2(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=45) "\t\t*x, err = ParseColorWithComment2(string(v))", + (string) (len=24) "\tcase ColorWithComment2:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=25) "\tcase *ColorWithComment2:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=27) "\t\t*x = ColorWithComment2(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment2(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment2NilPtr", + (string) (len=3) "\t\t}", + (string) (len=38) "\t\t*x, err = ParseColorWithComment2(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x ColorWithComment2) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=43) "func ParseColorWithComment2Example() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) (len=49) "func ParseColorWithComment2Description() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=64) "\t// ColorWithComment3Black is a ColorWithComment3 of type Black.", + (string) (len=48) "\tColorWithComment3Black ColorWithComment3 = iota", + (string) (len=64) "\t// ColorWithComment3White is a ColorWithComment3 of type White.", + (string) (len=23) "\tColorWithComment3White", + (string) (len=60) "\t// ColorWithComment3Red is a ColorWithComment3 of type Red.", + (string) (len=21) "\tColorWithComment3Red", + (string) (len=64) "\t// ColorWithComment3Green is a ColorWithComment3 of type Green.", + (string) (len=24) "\t// Green starts with 33", + (string) (len=53) "\tColorWithComment3Green ColorWithComment3 = iota + 30", + (string) (len=62) "\t// ColorWithComment3Blue is a ColorWithComment3 of type Blue.", + (string) (len=22) "\tColorWithComment3Blue", + (string) (len=62) "\t// ColorWithComment3Grey is a ColorWithComment3 of type Grey.", + (string) (len=22) "\tColorWithComment3Grey", + (string) (len=66) "\t// ColorWithComment3Yellow is a ColorWithComment3 of type Yellow.", + (string) (len=24) "\tColorWithComment3Yellow", + (string) (len=73) "\t// ColorWithComment3BlueGreen is a ColorWithComment3 of type Blue-Green.", + (string) (len=22) "\t// blue-green comment", + (string) (len=27) "\tColorWithComment3BlueGreen", + (string) (len=73) "\t// ColorWithComment3RedOrange is a ColorWithComment3 of type Red-Orange.", + (string) (len=27) "\tColorWithComment3RedOrange", + (string) (len=82) "\t// ColorWithComment3RedOrangeBlue is a ColorWithComment3 of type Red-Orange-Blue.", + (string) (len=31) "\tColorWithComment3RedOrangeBlue", + (string) (len=1) ")", + (string) "", + (string) (len=132) "var ErrInvalidColorWithComment3 = fmt.Errorf(\"not a valid ColorWithComment3, try [%s]\", strings.Join(_ColorWithComment3Names, \", \"))", + (string) "", + (string) (len=100) "const _ColorWithComment3Name = \"BLACKWHITEREDGREENBLUEGREYYELLOWBLUE-GREENRED-ORANGERED-ORANGE-BLUE\"", + (string) "", + (string) (len=39) "var _ColorWithComment3Names = []string{", + (string) (len=29) "\t_ColorWithComment3Name[0:5],", + (string) (len=30) "\t_ColorWithComment3Name[5:10],", + (string) (len=31) "\t_ColorWithComment3Name[10:13],", + (string) (len=31) "\t_ColorWithComment3Name[13:18],", + (string) (len=31) "\t_ColorWithComment3Name[18:22],", + (string) (len=31) "\t_ColorWithComment3Name[22:26],", + (string) (len=31) "\t_ColorWithComment3Name[26:32],", + (string) (len=31) "\t_ColorWithComment3Name[32:42],", + (string) (len=31) "\t_ColorWithComment3Name[42:52],", + (string) (len=31) "\t_ColorWithComment3Name[52:67],", + (string) (len=1) "}", + (string) "", + (string) (len=88) "// ColorWithComment3Names returns a list of possible string values of ColorWithComment3.", + (string) (len=40) "func ColorWithComment3Names() []string {", + (string) (len=52) "\ttmp := make([]string, len(_ColorWithComment3Names))", + (string) (len=35) "\tcopy(tmp, _ColorWithComment3Names)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithComment3Map = map[ColorWithComment3]string{", + (string) (len=61) "\tColorWithComment3Black: _ColorWithComment3Name[0:5],", + (string) (len=62) "\tColorWithComment3White: _ColorWithComment3Name[5:10],", + (string) (len=63) "\tColorWithComment3Red: _ColorWithComment3Name[10:13],", + (string) (len=63) "\tColorWithComment3Green: _ColorWithComment3Name[13:18],", + (string) (len=63) "\tColorWithComment3Blue: _ColorWithComment3Name[18:22],", + (string) (len=63) "\tColorWithComment3Grey: _ColorWithComment3Name[22:26],", + (string) (len=63) "\tColorWithComment3Yellow: _ColorWithComment3Name[26:32],", + (string) (len=63) "\tColorWithComment3BlueGreen: _ColorWithComment3Name[32:42],", + (string) (len=63) "\tColorWithComment3RedOrange: _ColorWithComment3Name[42:52],", + (string) (len=63) "\tColorWithComment3RedOrangeBlue: _ColorWithComment3Name[52:67],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment3) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment3Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment3(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment3) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment3Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment3Value = map[string]ColorWithComment3{", + (string) (len=55) "\t_ColorWithComment3Name[0:5]: ColorWithComment3Black,", + (string) (len=55) "\t_ColorWithComment3Name[5:10]: ColorWithComment3White,", + (string) (len=53) "\t_ColorWithComment3Name[10:13]: ColorWithComment3Red,", + (string) (len=55) "\t_ColorWithComment3Name[13:18]: ColorWithComment3Green,", + (string) (len=54) "\t_ColorWithComment3Name[18:22]: ColorWithComment3Blue,", + (string) (len=54) "\t_ColorWithComment3Name[22:26]: ColorWithComment3Grey,", + (string) (len=56) "\t_ColorWithComment3Name[26:32]: ColorWithComment3Yellow,", + (string) (len=59) "\t_ColorWithComment3Name[32:42]: ColorWithComment3BlueGreen,", + (string) (len=59) "\t_ColorWithComment3Name[42:52]: ColorWithComment3RedOrange,", + (string) (len=63) "\t_ColorWithComment3Name[52:67]: ColorWithComment3RedOrangeBlue,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment3 attempts to convert a string to a ColorWithComment3.", + (string) (len=69) "func ParseColorWithComment3(name string) (ColorWithComment3, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment3Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=87) "\treturn ColorWithComment3(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment3)", + (string) (len=1) "}", + (string) "", + (string) (len=99) "// MustParseColorWithComment3 converts a string to a ColorWithComment3, and panics if is not valid.", + (string) (len=64) "func MustParseColorWithComment3(name string) ColorWithComment3 {", + (string) (len=41) "\tval, err := ParseColorWithComment3(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment3) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment3) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment3(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=103) "var errColorWithComment3NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=65) "func (x *ColorWithComment3) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=27) "\t\t*x = ColorWithComment3(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=13) "\tcase string:", + (string) (len=37) "\t\t*x, err = ParseColorWithComment3(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=45) "\t\t*x, err = ParseColorWithComment3(string(v))", + (string) (len=24) "\tcase ColorWithComment3:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=25) "\tcase *ColorWithComment3:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=27) "\t\t*x = ColorWithComment3(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment3(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment3NilPtr", + (string) (len=3) "\t\t}", + (string) (len=38) "\t\t*x, err = ParseColorWithComment3(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x ColorWithComment3) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=43) "func ParseColorWithComment3Example() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) (len=49) "func ParseColorWithComment3Description() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=18) "\t// Skipped value.", + (string) (len=15) "\t// Placeholder", + (string) (len=27) "\t_ ColorWithComment4 = iota", + (string) (len=64) "\t// ColorWithComment4Black is a ColorWithComment4 of type Black.", + (string) (len=23) "\tColorWithComment4Black", + (string) (len=64) "\t// ColorWithComment4White is a ColorWithComment4 of type White.", + (string) (len=23) "\tColorWithComment4White", + (string) (len=60) "\t// ColorWithComment4Red is a ColorWithComment4 of type Red.", + (string) (len=21) "\tColorWithComment4Red", + (string) (len=64) "\t// ColorWithComment4Green is a ColorWithComment4 of type Green.", + (string) (len=24) "\t// Green starts with 33", + (string) (len=53) "\tColorWithComment4Green ColorWithComment4 = iota + 29", + (string) (len=62) "\t// ColorWithComment4Blue is a ColorWithComment4 of type Blue.", + (string) (len=22) "\tColorWithComment4Blue", + (string) (len=62) "\t// ColorWithComment4Grey is a ColorWithComment4 of type Grey.", + (string) (len=22) "\tColorWithComment4Grey", + (string) (len=66) "\t// ColorWithComment4Yellow is a ColorWithComment4 of type Yellow.", + (string) (len=110) "\t// Where did all the (somewhat) bad fish go? (something else that goes in parentheses at the end of the line)", + (string) (len=24) "\tColorWithComment4Yellow", + (string) (len=73) "\t// ColorWithComment4BlueGreen is a ColorWithComment4 of type Blue-Green.", + (string) (len=22) "\t// blue-green comment", + (string) (len=27) "\tColorWithComment4BlueGreen", + (string) (len=73) "\t// ColorWithComment4RedOrange is a ColorWithComment4 of type Red-Orange.", + (string) (len=20) "\t// has a , in it!?!", + (string) (len=27) "\tColorWithComment4RedOrange", + (string) (len=1) ")", + (string) "", + (string) (len=132) "var ErrInvalidColorWithComment4 = fmt.Errorf(\"not a valid ColorWithComment4, try [%s]\", strings.Join(_ColorWithComment4Names, \", \"))", + (string) "", + (string) (len=85) "const _ColorWithComment4Name = \"BLACKWHITEREDGREENBLUEGREYYELLOWBLUE-GREENRED-ORANGE\"", + (string) "", + (string) (len=39) "var _ColorWithComment4Names = []string{", + (string) (len=29) "\t_ColorWithComment4Name[0:5],", + (string) (len=30) "\t_ColorWithComment4Name[5:10],", + (string) (len=31) "\t_ColorWithComment4Name[10:13],", + (string) (len=31) "\t_ColorWithComment4Name[13:18],", + (string) (len=31) "\t_ColorWithComment4Name[18:22],", + (string) (len=31) "\t_ColorWithComment4Name[22:26],", + (string) (len=31) "\t_ColorWithComment4Name[26:32],", + (string) (len=31) "\t_ColorWithComment4Name[32:42],", + (string) (len=31) "\t_ColorWithComment4Name[42:52],", + (string) (len=1) "}", + (string) "", + (string) (len=88) "// ColorWithComment4Names returns a list of possible string values of ColorWithComment4.", + (string) (len=40) "func ColorWithComment4Names() []string {", + (string) (len=52) "\ttmp := make([]string, len(_ColorWithComment4Names))", + (string) (len=35) "\tcopy(tmp, _ColorWithComment4Names)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=57) "var _ColorWithComment4Map = map[ColorWithComment4]string{", + (string) (len=57) "\tColorWithComment4Black: _ColorWithComment4Name[0:5],", + (string) (len=58) "\tColorWithComment4White: _ColorWithComment4Name[5:10],", + (string) (len=59) "\tColorWithComment4Red: _ColorWithComment4Name[10:13],", + (string) (len=59) "\tColorWithComment4Green: _ColorWithComment4Name[13:18],", + (string) (len=59) "\tColorWithComment4Blue: _ColorWithComment4Name[18:22],", + (string) (len=59) "\tColorWithComment4Grey: _ColorWithComment4Name[22:26],", + (string) (len=59) "\tColorWithComment4Yellow: _ColorWithComment4Name[26:32],", + (string) (len=59) "\tColorWithComment4BlueGreen: _ColorWithComment4Name[32:42],", + (string) (len=59) "\tColorWithComment4RedOrange: _ColorWithComment4Name[42:52],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=44) "func (x ColorWithComment4) String() string {", + (string) (len=45) "\tif str, ok := _ColorWithComment4Map[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=47) "\treturn fmt.Sprintf(\"ColorWithComment4(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=43) "func (x ColorWithComment4) IsValid() bool {", + (string) (len=34) "\t_, ok := _ColorWithComment4Map[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", + (string) (len=59) "var _ColorWithComment4Value = map[string]ColorWithComment4{", + (string) (len=55) "\t_ColorWithComment4Name[0:5]: ColorWithComment4Black,", + (string) (len=55) "\t_ColorWithComment4Name[5:10]: ColorWithComment4White,", + (string) (len=53) "\t_ColorWithComment4Name[10:13]: ColorWithComment4Red,", + (string) (len=55) "\t_ColorWithComment4Name[13:18]: ColorWithComment4Green,", + (string) (len=54) "\t_ColorWithComment4Name[18:22]: ColorWithComment4Blue,", + (string) (len=54) "\t_ColorWithComment4Name[22:26]: ColorWithComment4Grey,", + (string) (len=56) "\t_ColorWithComment4Name[26:32]: ColorWithComment4Yellow,", + (string) (len=59) "\t_ColorWithComment4Name[32:42]: ColorWithComment4BlueGreen,", + (string) (len=59) "\t_ColorWithComment4Name[42:52]: ColorWithComment4RedOrange,", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// ParseColorWithComment4 attempts to convert a string to a ColorWithComment4.", + (string) (len=69) "func ParseColorWithComment4(name string) (ColorWithComment4, error) {", + (string) (len=48) "\tif x, ok := _ColorWithComment4Value[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=87) "\treturn ColorWithComment4(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidColorWithComment4)", + (string) (len=1) "}", + (string) "", + (string) (len=99) "// MustParseColorWithComment4 converts a string to a ColorWithComment4, and panics if is not valid.", + (string) (len=64) "func MustParseColorWithComment4(name string) ColorWithComment4 {", + (string) (len=41) "\tval, err := ParseColorWithComment4(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=58) "func (x ColorWithComment4) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=62) "func (x *ColorWithComment4) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=41) "\ttmp, err := ParseColorWithComment4(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=103) "var errColorWithComment4NilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=65) "func (x *ColorWithComment4) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=27) "\t\t*x = ColorWithComment4(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=13) "\tcase string:", + (string) (len=37) "\t\t*x, err = ParseColorWithComment4(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=45) "\t\t*x, err = ParseColorWithComment4(string(v))", + (string) (len=24) "\tcase ColorWithComment4:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=25) "\tcase *ColorWithComment4:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=27) "\t\t*x = ColorWithComment4(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", + (string) (len=3) "\t\t}", + (string) (len=28) "\t\t*x = ColorWithComment4(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=36) "\t\t\treturn errColorWithComment4NilPtr", + (string) (len=3) "\t\t}", + (string) (len=38) "\t\t*x, err = ParseColorWithComment4(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=58) "func (x ColorWithComment4) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=43) "func ParseColorWithComment4Example() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) (len=49) "func ParseColorWithComment4Description() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=52) "\t// Enum64bitUnknown is a Enum64bit of type Unknown.", + (string) (len=34) "\tEnum64bitUnknown Enum64bit = iota", + (string) (len=48) "\t// Enum64bitE2P15 is a Enum64bit of type E2P15.", + (string) (len=40) "\tEnum64bitE2P15 Enum64bit = iota + 32767", + (string) (len=48) "\t// Enum64bitE2P16 is a Enum64bit of type E2P16.", + (string) (len=40) "\tEnum64bitE2P16 Enum64bit = iota + 65534", + (string) (len=48) "\t// Enum64bitE2P17 is a Enum64bit of type E2P17.", + (string) (len=41) "\tEnum64bitE2P17 Enum64bit = iota + 131069", + (string) (len=48) "\t// Enum64bitE2P18 is a Enum64bit of type E2P18.", + (string) (len=41) "\tEnum64bitE2P18 Enum64bit = iota + 262140", + (string) (len=48) "\t// Enum64bitE2P19 is a Enum64bit of type E2P19.", + (string) (len=41) "\tEnum64bitE2P19 Enum64bit = iota + 524283", + (string) (len=48) "\t// Enum64bitE2P20 is a Enum64bit of type E2P20.", + (string) (len=42) "\tEnum64bitE2P20 Enum64bit = iota + 1048570", + (string) (len=48) "\t// Enum64bitE2P21 is a Enum64bit of type E2P21.", + (string) (len=42) "\tEnum64bitE2P21 Enum64bit = iota + 2097145", + (string) (len=48) "\t// Enum64bitE2P22 is a Enum64bit of type E2P22.", + (string) (len=43) "\tEnum64bitE2P22 Enum64bit = iota + 33554424", + (string) (len=48) "\t// Enum64bitE2P23 is a Enum64bit of type E2P23.", + (string) (len=43) "\tEnum64bitE2P23 Enum64bit = iota + 67108855", + (string) (len=48) "\t// Enum64bitE2P28 is a Enum64bit of type E2P28.", + (string) (len=44) "\tEnum64bitE2P28 Enum64bit = iota + 536870902", + (string) (len=48) "\t// Enum64bitE2P30 is a Enum64bit of type E2P30.", + (string) (len=45) "\tEnum64bitE2P30 Enum64bit = iota + 1073741813", + (string) (len=48) "\t// Enum64bitE2P31 is a Enum64bit of type E2P31.", + (string) (len=45) "\tEnum64bitE2P31 Enum64bit = iota + 2147483636", + (string) (len=48) "\t// Enum64bitE2P32 is a Enum64bit of type E2P32.", + (string) (len=45) "\tEnum64bitE2P32 Enum64bit = iota + 4294967283", + (string) (len=48) "\t// Enum64bitE2P33 is a Enum64bit of type E2P33.", + (string) (len=45) "\tEnum64bitE2P33 Enum64bit = iota + 8454967282", + (string) (len=1) ")", + (string) "", + (string) (len=108) "var ErrInvalidEnum64bit = fmt.Errorf(\"not a valid Enum64bit, try [%s]\", strings.Join(_Enum64bitNames, \", \"))", + (string) "", + (string) (len=102) "const _Enum64bitName = \"UNKNOWNE2P15E2P16E2P17E2P18E2P19E2P20E2P21E2P22E2P23E2P28E2P30E2P31E2P32E2P33\"", + (string) "", + (string) (len=31) "var _Enum64bitNames = []string{", + (string) (len=21) "\t_Enum64bitName[0:7],", + (string) (len=22) "\t_Enum64bitName[7:12],", + (string) (len=23) "\t_Enum64bitName[12:17],", + (string) (len=23) "\t_Enum64bitName[17:22],", + (string) (len=23) "\t_Enum64bitName[22:27],", + (string) (len=23) "\t_Enum64bitName[27:32],", + (string) (len=23) "\t_Enum64bitName[32:37],", + (string) (len=23) "\t_Enum64bitName[37:42],", + (string) (len=23) "\t_Enum64bitName[42:47],", + (string) (len=23) "\t_Enum64bitName[47:52],", + (string) (len=23) "\t_Enum64bitName[52:57],", + (string) (len=23) "\t_Enum64bitName[57:62],", + (string) (len=23) "\t_Enum64bitName[62:67],", + (string) (len=23) "\t_Enum64bitName[67:72],", + (string) (len=23) "\t_Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=72) "// Enum64bitNames returns a list of possible string values of Enum64bit.", + (string) (len=32) "func Enum64bitNames() []string {", + (string) (len=44) "\ttmp := make([]string, len(_Enum64bitNames))", + (string) (len=27) "\tcopy(tmp, _Enum64bitNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _Enum64bitMap = map[Enum64bit]string{", + (string) (len=39) "\tEnum64bitUnknown: _Enum64bitName[0:7],", + (string) (len=40) "\tEnum64bitE2P15: _Enum64bitName[7:12],", + (string) (len=41) "\tEnum64bitE2P16: _Enum64bitName[12:17],", + (string) (len=41) "\tEnum64bitE2P17: _Enum64bitName[17:22],", + (string) (len=41) "\tEnum64bitE2P18: _Enum64bitName[22:27],", + (string) (len=41) "\tEnum64bitE2P19: _Enum64bitName[27:32],", + (string) (len=41) "\tEnum64bitE2P20: _Enum64bitName[32:37],", + (string) (len=41) "\tEnum64bitE2P21: _Enum64bitName[37:42],", + (string) (len=41) "\tEnum64bitE2P22: _Enum64bitName[42:47],", + (string) (len=41) "\tEnum64bitE2P23: _Enum64bitName[47:52],", + (string) (len=41) "\tEnum64bitE2P28: _Enum64bitName[52:57],", + (string) (len=41) "\tEnum64bitE2P30: _Enum64bitName[57:62],", + (string) (len=41) "\tEnum64bitE2P31: _Enum64bitName[62:67],", + (string) (len=41) "\tEnum64bitE2P32: _Enum64bitName[67:72],", + (string) (len=41) "\tEnum64bitE2P33: _Enum64bitName[72:77],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=36) "func (x Enum64bit) String() string {", + (string) (len=37) "\tif str, ok := _Enum64bitMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=39) "\treturn fmt.Sprintf(\"Enum64bit(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=35) "func (x Enum64bit) IsValid() bool {", + (string) (len=26) "\t_, ok := _Enum64bitMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _Enum64bitValue = map[string]Enum64bit{", + (string) (len=41) "\t_Enum64bitName[0:7]: Enum64bitUnknown,", + (string) (len=39) "\t_Enum64bitName[7:12]: Enum64bitE2P15,", + (string) (len=39) "\t_Enum64bitName[12:17]: Enum64bitE2P16,", + (string) (len=39) "\t_Enum64bitName[17:22]: Enum64bitE2P17,", + (string) (len=39) "\t_Enum64bitName[22:27]: Enum64bitE2P18,", + (string) (len=39) "\t_Enum64bitName[27:32]: Enum64bitE2P19,", + (string) (len=39) "\t_Enum64bitName[32:37]: Enum64bitE2P20,", + (string) (len=39) "\t_Enum64bitName[37:42]: Enum64bitE2P21,", + (string) (len=39) "\t_Enum64bitName[42:47]: Enum64bitE2P22,", + (string) (len=39) "\t_Enum64bitName[47:52]: Enum64bitE2P23,", + (string) (len=39) "\t_Enum64bitName[52:57]: Enum64bitE2P28,", + (string) (len=39) "\t_Enum64bitName[57:62]: Enum64bitE2P30,", + (string) (len=39) "\t_Enum64bitName[62:67]: Enum64bitE2P31,", + (string) (len=39) "\t_Enum64bitName[67:72]: Enum64bitE2P32,", + (string) (len=39) "\t_Enum64bitName[72:77]: Enum64bitE2P33,", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// ParseEnum64bit attempts to convert a string to a Enum64bit.", + (string) (len=53) "func ParseEnum64bit(name string) (Enum64bit, error) {", + (string) (len=40) "\tif x, ok := _Enum64bitValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=71) "\treturn Enum64bit(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidEnum64bit)", + (string) (len=1) "}", + (string) "", + (string) (len=83) "// MustParseEnum64bit converts a string to a Enum64bit, and panics if is not valid.", + (string) (len=48) "func MustParseEnum64bit(name string) Enum64bit {", + (string) (len=33) "\tval, err := ParseEnum64bit(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=50) "func (x Enum64bit) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=54) "func (x *Enum64bit) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=33) "\ttmp, err := ParseEnum64bit(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=95) "var errEnum64bitNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=57) "func (x *Enum64bit) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=19) "\t\t*x = Enum64bit(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=13) "\tcase string:", + (string) (len=29) "\t\t*x, err = ParseEnum64bit(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=37) "\t\t*x, err = ParseEnum64bit(string(v))", + (string) (len=16) "\tcase Enum64bit:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=17) "\tcase *Enum64bit:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=19) "\t\t*x = Enum64bit(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", + (string) (len=3) "\t\t}", + (string) (len=20) "\t\t*x = Enum64bit(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=28) "\t\t\treturn errEnum64bitNilPtr", + (string) (len=3) "\t\t}", + (string) (len=30) "\t\t*x, err = ParseEnum64bit(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=50) "func (x Enum64bit) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=35) "func ParseEnum64bitExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) (len=41) "func ParseEnum64bitDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=42) "\t// ModelToyota is a Model of type Toyota.", + (string) (len=25) "\tModelToyota Model = iota", + (string) (len=18) "\t// Skipped value.", + (string) (len=2) "\t_", + (string) (len=40) "\t// ModelChevy is a Model of type Chevy.", + (string) (len=11) "\tModelChevy", + (string) (len=18) "\t// Skipped value.", + (string) (len=2) "\t_", + (string) (len=38) "\t// ModelFord is a Model of type Ford.", + (string) (len=10) "\tModelFord", + (string) (len=1) ")", + (string) "", + (string) (len=96) "var ErrInvalidModel = fmt.Errorf(\"not a valid Model, try [%s]\", strings.Join(_ModelNames, \", \"))", + (string) "", + (string) (len=36) "const _ModelName = \"TOYOTACHEVYFORD\"", + (string) "", + (string) (len=27) "var _ModelNames = []string{", + (string) (len=17) "\t_ModelName[0:6],", + (string) (len=18) "\t_ModelName[6:11],", + (string) (len=19) "\t_ModelName[11:15],", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ModelNames returns a list of possible string values of Model.", + (string) (len=28) "func ModelNames() []string {", + (string) (len=40) "\ttmp := make([]string, len(_ModelNames))", + (string) (len=23) "\tcopy(tmp, _ModelNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _ModelMap = map[Model]string{", + (string) (len=30) "\tModelToyota: _ModelName[0:6],", + (string) (len=31) "\tModelChevy: _ModelName[6:11],", + (string) (len=32) "\tModelFord: _ModelName[11:15],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=32) "func (x Model) String() string {", + (string) (len=33) "\tif str, ok := _ModelMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=35) "\treturn fmt.Sprintf(\"Model(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=31) "func (x Model) IsValid() bool {", + (string) (len=22) "\t_, ok := _ModelMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", + (string) (len=35) "var _ModelValue = map[string]Model{", + (string) (len=32) "\t_ModelName[0:6]: ModelToyota,", + (string) (len=31) "\t_ModelName[6:11]: ModelChevy,", + (string) (len=30) "\t_ModelName[11:15]: ModelFord,", + (string) (len=1) "}", + (string) "", + (string) (len=54) "// ParseModel attempts to convert a string to a Model.", + (string) (len=45) "func ParseModel(name string) (Model, error) {", + (string) (len=36) "\tif x, ok := _ModelValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=63) "\treturn Model(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidModel)", + (string) (len=1) "}", + (string) "", + (string) (len=75) "// MustParseModel converts a string to a Model, and panics if is not valid.", + (string) (len=40) "func MustParseModel(name string) Model {", + (string) (len=29) "\tval, err := ParseModel(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=46) "func (x Model) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=50) "func (x *Model) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=29) "\ttmp, err := ParseModel(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=91) "var errModelNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=53) "func (x *Model) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=15) "\t\t*x = Model(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=13) "\tcase string:", + (string) (len=25) "\t\t*x, err = ParseModel(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=33) "\t\t*x, err = ParseModel(string(v))", + (string) (len=12) "\tcase Model:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=13) "\tcase *Model:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errModelNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errModelNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errModelNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\t*x = Model(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errModelNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errModelNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errModelNilPtr", + (string) (len=3) "\t\t}", + (string) (len=16) "\t\t*x = Model(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=24) "\t\t\treturn errModelNilPtr", + (string) (len=3) "\t\t}", + (string) (len=26) "\t\t*x, err = ParseModel(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=46) "func (x Model) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=31) "func ParseModelExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) (len=37) "func ParseModelDescription() string {", + (string) (len=17) "\treturn `Model x`", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=60) "\t// NonASCIIПродам is a NonASCII of type Продам.", + (string) (len=44) "\tNonASCIIПродам NonASCII = iota + 1114", + (string) (len=48) "\t// NonASCII車庫 is a NonASCII of type 車庫.", + (string) (len=37) "\tNonASCII車庫 NonASCII = iota + 299", + (string) (len=52) "\t// NonASCIIԷժան is a NonASCII of type Էժան.", + (string) (len=38) "\tNonASCIIԷժան NonASCII = iota + -1", + (string) (len=1) ")", + (string) "", + (string) (len=105) "var ErrInvalidNonASCII = fmt.Errorf(\"not a valid NonASCII, try [%s]\", strings.Join(_NonASCIINames, \", \"))", + (string) "", + (string) (len=50) "const _NonASCIIName = \"ПРОДАМ車庫ԷԺԱՆ\"", + (string) "", + (string) (len=30) "var _NonASCIINames = []string{", + (string) (len=21) "\t_NonASCIIName[0:12],", + (string) (len=22) "\t_NonASCIIName[12:18],", + (string) (len=22) "\t_NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=70) "// NonASCIINames returns a list of possible string values of NonASCII.", + (string) (len=31) "func NonASCIINames() []string {", + (string) (len=43) "\ttmp := make([]string, len(_NonASCIINames))", + (string) (len=26) "\tcopy(tmp, _NonASCIINames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=39) "var _NonASCIIMap = map[NonASCII]string{", + (string) (len=43) "\tNonASCIIПродам: _NonASCIIName[0:12],", + (string) (len=42) "\tNonASCII車庫: _NonASCIIName[12:18],", + (string) (len=42) "\tNonASCIIԷժան: _NonASCIIName[18:26],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=35) "func (x NonASCII) String() string {", + (string) (len=36) "\tif str, ok := _NonASCIIMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=34) "func (x NonASCII) IsValid() bool {", + (string) (len=25) "\t_, ok := _NonASCIIMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", + (string) (len=41) "var _NonASCIIValue = map[string]NonASCII{", + (string) (len=44) "\t_NonASCIIName[0:12]: NonASCIIПродам,", + (string) (len=38) "\t_NonASCIIName[12:18]: NonASCII車庫,", + (string) (len=40) "\t_NonASCIIName[18:26]: NonASCIIԷժան,", + (string) (len=1) "}", + (string) "", + (string) (len=60) "// ParseNonASCII attempts to convert a string to a NonASCII.", + (string) (len=51) "func ParseNonASCII(name string) (NonASCII, error) {", + (string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=69) "\treturn NonASCII(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidNonASCII)", + (string) (len=1) "}", + (string) "", + (string) (len=81) "// MustParseNonASCII converts a string to a NonASCII, and panics if is not valid.", + (string) (len=46) "func MustParseNonASCII(name string) NonASCII {", + (string) (len=32) "\tval, err := ParseNonASCII(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=49) "func (x NonASCII) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=53) "func (x *NonASCII) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=32) "\ttmp, err := ParseNonASCII(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=94) "var errNonASCIINilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=56) "func (x *NonASCII) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=18) "\t\t*x = NonASCII(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=13) "\tcase string:", + (string) (len=28) "\t\t*x, err = ParseNonASCII(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=36) "\t\t*x, err = ParseNonASCII(string(v))", + (string) (len=15) "\tcase NonASCII:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=16) "\tcase *NonASCII:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=18) "\t\t*x = NonASCII(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", + (string) (len=3) "\t\t}", + (string) (len=19) "\t\t*x = NonASCII(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=27) "\t\t\treturn errNonASCIINilPtr", + (string) (len=3) "\t\t}", + (string) (len=29) "\t\t*x, err = ParseNonASCII(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=49) "func (x NonASCII) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=34) "func ParseNonASCIIExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) (len=40) "func ParseNonASCIIDescription() string {", + (string) (len=18) "\treturn `NonASCII`", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=61) "\t// SanitizingTestHyphen is a Sanitizing of type Test-Hyphen.", + (string) (len=39) "\tSanitizingTestHyphen Sanitizing = iota", + (string) (len=63) "\t// SanitizingHyphenStart is a Sanitizing of type -HyphenStart.", + (string) (len=22) "\tSanitizingHyphenStart", + (string) (len=72) "\t// Sanitizing_UnderscoreFirst is a Sanitizing of type _UnderscoreFirst.", + (string) (len=27) "\tSanitizing_UnderscoreFirst", + (string) (len=64) "\t// Sanitizing0NumberFirst is a Sanitizing of type 0NumberFirst.", + (string) (len=23) "\tSanitizing0NumberFirst", + (string) (len=60) "\t// Sanitizing123456789A is a Sanitizing of type 123456789A.", + (string) (len=21) "\tSanitizing123456789A", + (string) (len=61) "\t// Sanitizing123123Asdf is a Sanitizing of type 123123-Asdf.", + (string) (len=21) "\tSanitizing123123Asdf", + (string) (len=66) "\t// SanitizingEndingHyphen is a Sanitizing of type Ending-Hyphen-.", + (string) (len=23) "\tSanitizingEndingHyphen", + (string) (len=1) ")", + (string) "", + (string) (len=111) "var ErrInvalidSanitizing = fmt.Errorf(\"not a valid Sanitizing, try [%s]\", strings.Join(_SanitizingNames, \", \"))", + (string) "", + (string) (len=112) "const _SanitizingName = \"TEST-HYPHEN-HYPHENSTART_UNDERSCOREFIRST0NUMBERFIRST123456789A123123-ASDFENDING-HYPHEN-\"", + (string) "", + (string) (len=32) "var _SanitizingNames = []string{", + (string) (len=23) "\t_SanitizingName[0:11],", + (string) (len=24) "\t_SanitizingName[11:23],", + (string) (len=24) "\t_SanitizingName[23:39],", + (string) (len=24) "\t_SanitizingName[39:51],", + (string) (len=24) "\t_SanitizingName[51:61],", + (string) (len=24) "\t_SanitizingName[61:72],", + (string) (len=24) "\t_SanitizingName[72:86],", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// SanitizingNames returns a list of possible string values of Sanitizing.", + (string) (len=33) "func SanitizingNames() []string {", + (string) (len=45) "\ttmp := make([]string, len(_SanitizingNames))", + (string) (len=28) "\tcopy(tmp, _SanitizingNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=43) "var _SanitizingMap = map[Sanitizing]string{", + (string) (len=51) "\tSanitizingTestHyphen: _SanitizingName[0:11],", + (string) (len=52) "\tSanitizingHyphenStart: _SanitizingName[11:23],", + (string) (len=52) "\tSanitizing_UnderscoreFirst: _SanitizingName[23:39],", + (string) (len=52) "\tSanitizing0NumberFirst: _SanitizingName[39:51],", + (string) (len=52) "\tSanitizing123456789A: _SanitizingName[51:61],", + (string) (len=52) "\tSanitizing123123Asdf: _SanitizingName[61:72],", + (string) (len=52) "\tSanitizingEndingHyphen: _SanitizingName[72:86],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x Sanitizing) String() string {", + (string) (len=38) "\tif str, ok := _SanitizingMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=40) "\treturn fmt.Sprintf(\"Sanitizing(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x Sanitizing) IsValid() bool {", + (string) (len=27) "\t_, ok := _SanitizingMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _SanitizingValue = map[string]Sanitizing{", + (string) (len=46) "\t_SanitizingName[0:11]: SanitizingTestHyphen,", + (string) (len=47) "\t_SanitizingName[11:23]: SanitizingHyphenStart,", + (string) (len=52) "\t_SanitizingName[23:39]: Sanitizing_UnderscoreFirst,", + (string) (len=48) "\t_SanitizingName[39:51]: Sanitizing0NumberFirst,", + (string) (len=46) "\t_SanitizingName[51:61]: Sanitizing123456789A,", + (string) (len=46) "\t_SanitizingName[61:72]: Sanitizing123123Asdf,", + (string) (len=48) "\t_SanitizingName[72:86]: SanitizingEndingHyphen,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseSanitizing attempts to convert a string to a Sanitizing.", + (string) (len=55) "func ParseSanitizing(name string) (Sanitizing, error) {", + (string) (len=41) "\tif x, ok := _SanitizingValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=73) "\treturn Sanitizing(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSanitizing)", + (string) (len=1) "}", + (string) "", + (string) (len=85) "// MustParseSanitizing converts a string to a Sanitizing, and panics if is not valid.", + (string) (len=50) "func MustParseSanitizing(name string) Sanitizing {", + (string) (len=34) "\tval, err := ParseSanitizing(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x Sanitizing) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *Sanitizing) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=34) "\ttmp, err := ParseSanitizing(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=96) "var errSanitizingNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *Sanitizing) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=20) "\t\t*x = Sanitizing(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseSanitizing(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=38) "\t\t*x, err = ParseSanitizing(string(v))", + (string) (len=17) "\tcase Sanitizing:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=18) "\tcase *Sanitizing:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=20) "\t\t*x = Sanitizing(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", + (string) (len=3) "\t\t}", + (string) (len=21) "\t\t*x = Sanitizing(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errSanitizingNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseSanitizing(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x Sanitizing) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=36) "func ParseSanitizingExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) (len=42) "func ParseSanitizingDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=36) "\t// SodaCoke is a Soda of type Coke.", + (string) (len=21) "\tSodaCoke Soda = iota", + (string) (len=38) "\t// SodaPepsi is a Soda of type Pepsi.", + (string) (len=10) "\tSodaPepsi", + (string) (len=40) "\t// SodaMtnDew is a Soda of type MtnDew.", + (string) (len=11) "\tSodaMtnDew", + (string) (len=1) ")", + (string) "", + (string) (len=93) "var ErrInvalidSoda = fmt.Errorf(\"not a valid Soda, try [%s]\", strings.Join(_SodaNames, \", \"))", + (string) "", + (string) (len=35) "const _SodaName = \"COKEPEPSIMTNDEW\"", + (string) "", + (string) (len=26) "var _SodaNames = []string{", + (string) (len=16) "\t_SodaName[0:4],", + (string) (len=16) "\t_SodaName[4:9],", + (string) (len=17) "\t_SodaName[9:15],", + (string) (len=1) "}", + (string) "", + (string) (len=62) "// SodaNames returns a list of possible string values of Soda.", + (string) (len=27) "func SodaNames() []string {", + (string) (len=39) "\ttmp := make([]string, len(_SodaNames))", + (string) (len=22) "\tcopy(tmp, _SodaNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=31) "var _SodaMap = map[Soda]string{", + (string) (len=28) "\tSodaCoke: _SodaName[0:4],", + (string) (len=28) "\tSodaPepsi: _SodaName[4:9],", + (string) (len=29) "\tSodaMtnDew: _SodaName[9:15],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=31) "func (x Soda) String() string {", + (string) (len=32) "\tif str, ok := _SodaMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=34) "\treturn fmt.Sprintf(\"Soda(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=30) "func (x Soda) IsValid() bool {", + (string) (len=21) "\t_, ok := _SodaMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", + (string) (len=33) "var _SodaValue = map[string]Soda{", + (string) (len=27) "\t_SodaName[0:4]: SodaCoke,", + (string) (len=28) "\t_SodaName[4:9]: SodaPepsi,", + (string) (len=29) "\t_SodaName[9:15]: SodaMtnDew,", + (string) (len=1) "}", + (string) "", + (string) (len=52) "// ParseSoda attempts to convert a string to a Soda.", + (string) (len=43) "func ParseSoda(name string) (Soda, error) {", + (string) (len=35) "\tif x, ok := _SodaValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=61) "\treturn Soda(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidSoda)", + (string) (len=1) "}", + (string) "", + (string) (len=73) "// MustParseSoda converts a string to a Soda, and panics if is not valid.", + (string) (len=38) "func MustParseSoda(name string) Soda {", + (string) (len=28) "\tval, err := ParseSoda(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=45) "func (x Soda) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=49) "func (x *Soda) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=28) "\ttmp, err := ParseSoda(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=90) "var errSodaNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=52) "func (x *Soda) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=14) "\t\t*x = Soda(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=13) "\tcase string:", + (string) (len=24) "\t\t*x, err = ParseSoda(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=32) "\t\t*x, err = ParseSoda(string(v))", + (string) (len=11) "\tcase Soda:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=12) "\tcase *Soda:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=23) "\t\t\treturn errSodaNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=23) "\t\t\treturn errSodaNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=23) "\t\t\treturn errSodaNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=14) "\t\t*x = Soda(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=23) "\t\t\treturn errSodaNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=23) "\t\t\treturn errSodaNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=23) "\t\t\treturn errSodaNilPtr", + (string) (len=3) "\t\t}", + (string) (len=15) "\t\t*x = Soda(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=23) "\t\t\treturn errSodaNilPtr", + (string) (len=3) "\t\t}", + (string) (len=25) "\t\t*x, err = ParseSoda(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=45) "func (x Soda) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=30) "func ParseSodaExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) (len=36) "func ParseSodaDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=68) "\t// StartNotZeroStartWithNum is a StartNotZero of type StartWithNum.", + (string) (len=50) "\tStartNotZeroStartWithNum StartNotZero = iota + 23", + (string) (len=58) "\t// StartNotZeroNextNum is a StartNotZero of type NextNum.", + (string) (len=20) "\tStartNotZeroNextNum", + (string) (len=1) ")", + (string) "", + (string) (len=117) "var ErrInvalidStartNotZero = fmt.Errorf(\"not a valid StartNotZero, try [%s]\", strings.Join(_StartNotZeroNames, \", \"))", + (string) "", + (string) (len=47) "const _StartNotZeroName = \"STARTWITHNUMNEXTNUM\"", + (string) "", + (string) (len=34) "var _StartNotZeroNames = []string{", + (string) (len=25) "\t_StartNotZeroName[0:12],", + (string) (len=26) "\t_StartNotZeroName[12:19],", + (string) (len=1) "}", + (string) "", + (string) (len=78) "// StartNotZeroNames returns a list of possible string values of StartNotZero.", + (string) (len=35) "func StartNotZeroNames() []string {", + (string) (len=47) "\ttmp := make([]string, len(_StartNotZeroNames))", + (string) (len=30) "\tcopy(tmp, _StartNotZeroNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=47) "var _StartNotZeroMap = map[StartNotZero]string{", + (string) (len=51) "\tStartNotZeroStartWithNum: _StartNotZeroName[0:12],", + (string) (len=52) "\tStartNotZeroNextNum: _StartNotZeroName[12:19],", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=39) "func (x StartNotZero) String() string {", + (string) (len=40) "\tif str, ok := _StartNotZeroMap[x]; ok {", + (string) (len=12) "\t\treturn str", + (string) (len=2) "\t}", + (string) (len=42) "\treturn fmt.Sprintf(\"StartNotZero(%d)\", x)", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=38) "func (x StartNotZero) IsValid() bool {", + (string) (len=29) "\t_, ok := _StartNotZeroMap[x]", + (string) (len=10) "\treturn ok", + (string) (len=1) "}", + (string) "", + (string) (len=49) "var _StartNotZeroValue = map[string]StartNotZero{", + (string) (len=52) "\t_StartNotZeroName[0:12]: StartNotZeroStartWithNum,", + (string) (len=47) "\t_StartNotZeroName[12:19]: StartNotZeroNextNum,", + (string) (len=1) "}", + (string) "", + (string) (len=68) "// ParseStartNotZero attempts to convert a string to a StartNotZero.", + (string) (len=59) "func ParseStartNotZero(name string) (StartNotZero, error) {", + (string) (len=43) "\tif x, ok := _StartNotZeroValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=77) "\treturn StartNotZero(0), fmt.Errorf(\"%s is %w\", name, ErrInvalidStartNotZero)", + (string) (len=1) "}", + (string) "", + (string) (len=89) "// MustParseStartNotZero converts a string to a StartNotZero, and panics if is not valid.", + (string) (len=54) "func MustParseStartNotZero(name string) StartNotZero {", + (string) (len=36) "\tval, err := ParseStartNotZero(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=53) "func (x StartNotZero) MarshalText() ([]byte, error) {", + (string) (len=31) "\treturn []byte(x.String()), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=57) "func (x *StartNotZero) UnmarshalText(text []byte) error {", + (string) (len=21) "\tname := string(text)", + (string) (len=36) "\ttmp, err := ParseStartNotZero(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=98) "var errStartNotZeroNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=60) "func (x *StartNotZero) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=22) "\t\t*x = StartNotZero(0)", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=12) "\tcase int64:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=13) "\tcase string:", + (string) (len=32) "\t\t*x, err = ParseStartNotZero(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=40) "\t\t*x, err = ParseStartNotZero(string(v))", + (string) (len=19) "\tcase StartNotZero:", + (string) (len=8) "\t\t*x = v", + (string) (len=10) "\tcase int:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=20) "\tcase *StartNotZero:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=11) "\tcase uint:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=13) "\tcase uint64:", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=11) "\tcase *int:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=13) "\tcase *int64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number", + (string) (len=22) "\t\t*x = StartNotZero(v)", + (string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number", + (string) (len=15) "\t\tif v == nil {", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=12) "\tcase *uint:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=14) "\tcase *uint64:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", + (string) (len=3) "\t\t}", + (string) (len=23) "\t\t*x = StartNotZero(*v)", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=31) "\t\t\treturn errStartNotZeroNilPtr", + (string) (len=3) "\t\t}", + (string) (len=33) "\t\t*x, err = ParseStartNotZero(*v)", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=53) "func (x StartNotZero) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=38) "func ParseStartNotZeroExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) (len=44) "func ParseStartNotZeroDescription() string {", + (string) (len=10) "\treturn ``", + (string) (len=1) "}", + (string) "", + (string) (len=7) "const (", + (string) (len=52) "\t// StringEnumRandom is a StringEnum of type random.", + (string) (len=39) "\tStringEnumRandom StringEnum = \"random\"", + (string) (len=52) "\t// StringEnumValues is a StringEnum of type values.", + (string) (len=39) "\tStringEnumValues StringEnum = \"values\"", + (string) (len=48) "\t// StringEnumHere is a StringEnum of type here.", + (string) (len=35) "\tStringEnumHere StringEnum = \"here\"", + (string) (len=1) ")", + (string) "", + (string) (len=111) "var ErrInvalidStringEnum = fmt.Errorf(\"not a valid StringEnum, try [%s]\", strings.Join(_StringEnumNames, \", \"))", + (string) "", + (string) (len=32) "var _StringEnumNames = []string{", + (string) (len=26) "\tstring(StringEnumRandom),", + (string) (len=26) "\tstring(StringEnumValues),", + (string) (len=24) "\tstring(StringEnumHere),", + (string) (len=1) "}", + (string) "", + (string) (len=74) "// StringEnumNames returns a list of possible string values of StringEnum.", + (string) (len=33) "func StringEnumNames() []string {", + (string) (len=45) "\ttmp := make([]string, len(_StringEnumNames))", + (string) (len=28) "\tcopy(tmp, _StringEnumNames)", + (string) (len=11) "\treturn tmp", + (string) (len=1) "}", + (string) "", + (string) (len=44) "// String implements the Stringer interface.", + (string) (len=37) "func (x StringEnum) String() string {", + (string) (len=17) "\treturn string(x)", + (string) (len=1) "}", + (string) "", + (string) (len=66) "// IsValid provides a quick way to determine if the typed value is", + (string) (len=40) "// part of the allowed enumerated values", + (string) (len=36) "func (x StringEnum) IsValid() bool {", + (string) (len=37) "\t_, err := ParseStringEnum(string(x))", + (string) (len=18) "\treturn err == nil", + (string) (len=1) "}", + (string) "", + (string) (len=45) "var _StringEnumValue = map[string]StringEnum{", + (string) (len=28) "\t\"random\": StringEnumRandom,", + (string) (len=28) "\t\"values\": StringEnumValues,", + (string) (len=26) "\t\"here\": StringEnumHere,", + (string) (len=1) "}", + (string) "", + (string) (len=64) "// ParseStringEnum attempts to convert a string to a StringEnum.", + (string) (len=55) "func ParseStringEnum(name string) (StringEnum, error) {", + (string) (len=41) "\tif x, ok := _StringEnumValue[name]; ok {", + (string) (len=15) "\t\treturn x, nil", + (string) (len=2) "\t}", + (string) (len=74) "\treturn StringEnum(\"\"), fmt.Errorf(\"%s is %w\", name, ErrInvalidStringEnum)", + (string) (len=1) "}", + (string) "", + (string) (len=85) "// MustParseStringEnum converts a string to a StringEnum, and panics if is not valid.", + (string) (len=50) "func MustParseStringEnum(name string) StringEnum {", + (string) (len=34) "\tval, err := ParseStringEnum(name)", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\tpanic(err)", + (string) (len=2) "\t}", + (string) (len=11) "\treturn val", + (string) (len=1) "}", + (string) "", + (string) (len=53) "// MarshalText implements the text marshaller method.", + (string) (len=51) "func (x StringEnum) MarshalText() ([]byte, error) {", + (string) (len=30) "\treturn []byte(string(x)), nil", + (string) (len=1) "}", + (string) "", + (string) (len=57) "// UnmarshalText implements the text unmarshaller method.", + (string) (len=55) "func (x *StringEnum) UnmarshalText(text []byte) error {", + (string) (len=42) "\ttmp, err := ParseStringEnum(string(text))", + (string) (len=16) "\tif err != nil {", + (string) (len=12) "\t\treturn err", + (string) (len=2) "\t}", + (string) (len=9) "\t*x = tmp", + (string) (len=11) "\treturn nil", + (string) (len=1) "}", + (string) "", + (string) (len=96) "var errStringEnumNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes", + (string) "", + (string) (len=41) "// Scan implements the Scanner interface.", + (string) (len=58) "func (x *StringEnum) Scan(value interface{}) (err error) {", + (string) (len=18) "\tif value == nil {", + (string) (len=21) "\t\t*x = StringEnum(\"\")", + (string) (len=8) "\t\treturn", + (string) (len=2) "\t}", + (string) "", + (string) (len=37) "\t// A wider range of scannable types.", + (string) (len=61) "\t// driver.Value values at the top of the list for expediency", + (string) (len=27) "\tswitch v := value.(type) {", + (string) (len=13) "\tcase string:", + (string) (len=30) "\t\t*x, err = ParseStringEnum(v)", + (string) (len=13) "\tcase []byte:", + (string) (len=38) "\t\t*x, err = ParseStringEnum(string(v))", + (string) (len=17) "\tcase StringEnum:", + (string) (len=8) "\t\t*x = v", + (string) (len=18) "\tcase *StringEnum:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", + (string) (len=3) "\t\t}", + (string) (len=9) "\t\t*x = *v", + (string) (len=14) "\tcase *string:", + (string) (len=15) "\t\tif v == nil {", + (string) (len=29) "\t\t\treturn errStringEnumNilPtr", + (string) (len=3) "\t\t}", + (string) (len=31) "\t\t*x, err = ParseStringEnum(*v)", + (string) (len=9) "\tdefault:", + (string) (len=50) "\t\treturn errors.New(\"invalid type for StringEnum\")", + (string) (len=2) "\t}", + (string) "", + (string) (len=7) "\treturn", + (string) (len=1) "}", + (string) "", + (string) (len=48) "// Value implements the driver Valuer interface.", + (string) (len=51) "func (x StringEnum) Value() (driver.Value, error) {", + (string) (len=23) "\treturn x.String(), nil", + (string) (len=1) "}", + (string) "", + (string) (len=22) "// Additional template", + (string) (len=36) "func ParseStringEnumExample() bool {", + (string) (len=12) "\treturn true", + (string) (len=1) "}", + (string) (len=42) "func ParseStringEnumDescription() string {", + (string) (len=21) "\treturn `StringEnum.`", + (string) (len=1) "}", + (string) "" +} diff --git a/generator/enum.tmpl b/generator/enum.tmpl index 1d7528a1..574acdcd 100644 --- a/generator/enum.tmpl +++ b/generator/enum.tmpl @@ -341,7 +341,7 @@ func (n *Null{{.enum.Name}}Str) UnmarshalJSON(b []byte) error { {{- define "stringer"}} -const _{{.enum.Name}}Name = "{{ stringify .enum .forcelower }}" + const _{{.enum.Name}}Name = "{{ stringify .enum .forcelower .forceupper }}" {{ if .names }}var _{{.enum.Name}}Names = {{namify .enum}} diff --git a/generator/generator.go b/generator/generator.go index e51000ee..3b9fef45 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -53,6 +53,7 @@ type Generator struct { ptr bool mustParse bool forceLower bool + forceUpper bool noComments bool buildTags []string } @@ -205,6 +206,12 @@ func (g *Generator) WithForceLower() *Generator { return g } +// WithForceUpper is used to force enums names to upper case while keeping variable names the same. +func (g *Generator) WithForceUpper() *Generator { + g.forceUpper = true + return g +} + // WithNoComments is used to remove auto generated comments from the enum. func (g *Generator) WithNoComments() *Generator { g.noComments = true @@ -323,6 +330,7 @@ func (g *Generator) Generate(f *ast.File) ([]byte, error) { "sqlnullstr": g.sqlNullStr, "mustparse": g.mustParse, "forcelower": g.forceLower, + "forceupper": g.forceUpper, } templateName := "enum" diff --git a/generator/generator_test.go b/generator/generator_test.go index 5255559e..3732a0b6 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -88,6 +88,28 @@ func TestExampleFileMoreOptions(t *testing.T) { } } +// TestExampleFileMoreOptionsWithForceUpper — test with force upper option +func TestExampleFileMoreOptionsWithForceUpper(t *testing.T) { + g := NewGenerator(). + WithMarshal(). + WithSQLDriver(). + WithNames(). + WithoutSnakeToCamel(). + WithMustParse(). + WithForceUpper(). + WithTemplates(`../example/user_template.tmpl`) + // Parse the file given in arguments + imported, err := g.GenerateFromFile(testExample) + require.Nil(t, err, "Error generating formatted code") + + outputLines := strings.Split(string(imported), "\n") + cupaloy.SnapshotT(t, outputLines) + + if false { + fmt.Println(string(imported)) + } +} + // TestExampleFile func TestNoPrefixExampleFile(t *testing.T) { g := NewGenerator(). diff --git a/generator/template_funcs.go b/generator/template_funcs.go index ebacd2be..8456666f 100644 --- a/generator/template_funcs.go +++ b/generator/template_funcs.go @@ -7,13 +7,16 @@ import ( ) // Stringify returns a string that is all of the enum value names concatenated without a separator -func Stringify(e Enum, forceLower bool) (ret string, err error) { +func Stringify(e Enum, forceLower, forceUpper bool) (ret string, err error) { for _, val := range e.Values { if val.Name != skipHolder { next := val.RawName if forceLower { next = strings.ToLower(next) } + if forceUpper { + next = strings.ToUpper(next) + } ret = ret + next } } diff --git a/main.go b/main.go index f023bd2b..d57e3b77 100644 --- a/main.go +++ b/main.go @@ -40,6 +40,7 @@ type rootT struct { BuildTags cli.StringSlice MustParse bool ForceLower bool + ForceUpper bool NoComments bool } @@ -157,6 +158,11 @@ func main() { Usage: "Forces a camel cased comment to generate lowercased names.", Destination: &argv.ForceLower, }, + &cli.BoolFlag{ + Name: "forceupper", + Usage: "Forces a camel cased comment to generate uppercased names.", + Destination: &argv.ForceUpper, + }, &cli.BoolFlag{ Name: "nocomments", Usage: "Removes auto generated comments. If you add your own comments, these will still be created.", @@ -231,6 +237,9 @@ func main() { if argv.ForceLower { g.WithForceLower() } + if argv.ForceUpper { + g.WithForceUpper() + } if argv.NoComments { g.WithNoComments() } From 50af08cd2a7a6da67f5a82311c07d3a97db53a00 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 17 Sep 2023 18:09:14 -0700 Subject: [PATCH 74/91] Bump golang.org/x/text from 0.12.0 to 0.13.0 (#211) Bumps [golang.org/x/text](https://github.com/golang/text) from 0.12.0 to 0.13.0. - [Release notes](https://github.com/golang/text/releases) - [Commits](https://github.com/golang/text/compare/v0.12.0...v0.13.0) --- updated-dependencies: - dependency-name: golang.org/x/text dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 44ae7096..4afb6bd0 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.25.7 - golang.org/x/text v0.12.0 + golang.org/x/text v0.13.0 golang.org/x/tools v0.11.1 golang.org/x/tools/cmd/cover v0.1.0-deprecated ) diff --git a/go.sum b/go.sum index c4cfb22b..e87aad26 100644 --- a/go.sum +++ b/go.sum @@ -125,8 +125,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= From 3e1a5b900168f85b0b60f97f0dbd8608d1cfa03b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 05:43:30 -0700 Subject: [PATCH 75/91] Bump golang.org/x/tools from 0.11.1 to 0.13.0 (#214) Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.11.1 to 0.13.0. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.11.1...v0.13.0) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 4afb6bd0..a1988e29 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.25.7 golang.org/x/text v0.13.0 - golang.org/x/tools v0.11.1 + golang.org/x/tools v0.13.0 golang.org/x/tools/cmd/cover v0.1.0-deprecated ) @@ -36,7 +36,7 @@ require ( github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect golang.org/x/crypto v0.3.0 // indirect golang.org/x/mod v0.12.0 // indirect - golang.org/x/sys v0.10.0 // indirect + golang.org/x/sys v0.12.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index e87aad26..ddc12eaf 100644 --- a/go.sum +++ b/go.sum @@ -112,8 +112,8 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -133,8 +133,8 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= -golang.org/x/tools v0.11.1 h1:ojD5zOW8+7dOGzdnNgersm8aPfcDjhMp12UfG93NIMc= -golang.org/x/tools v0.11.1/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= +golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools/cmd/cover v0.1.0-deprecated h1:Rwy+mWYz6loAF+LnG1jHG/JWMHRMMC2/1XX3Ejkx9lA= golang.org/x/tools/cmd/cover v0.1.0-deprecated/go.mod h1:hMDiIvlpN1NoVgmjLjUJE9tMHyxHjFX7RuQ+rW12mSA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 3d844c8ecc59661ed7aa17bfd65727bc06a60ad8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 12:56:19 +0000 Subject: [PATCH 76/91] Bump actions/checkout from 3 to 4 (#215) --- .github/workflows/build_and_test.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/release_check.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 755a137f..c89545a0 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -25,7 +25,7 @@ jobs: go-version: ${{ matrix.go }} - name: checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Build run: make build diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 93720157..e430e128 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 diff --git a/.github/workflows/release_check.yml b/.github/workflows/release_check.yml index 652931ba..4b022a57 100644 --- a/.github/workflows/release_check.yml +++ b/.github/workflows/release_check.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 From 1208e5d02ce35961d496e24187278569bb75f6d1 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Mon, 13 Nov 2023 07:24:29 -0700 Subject: [PATCH 77/91] add ko docker build to goreleaser (#223) * add ko docker build to goreleaser * Update dependencies * add go 1.21 --- .github/workflows/build_and_test.yml | 1 + .github/workflows/release.yml | 4 ++-- .github/workflows/release_check.yml | 4 ++-- .goreleaser.yml | 11 ++++++++++ go.mod | 12 +++++----- go.sum | 33 +++++++++++----------------- 6 files changed, 35 insertions(+), 30 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index c89545a0..874c6fbf 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -17,6 +17,7 @@ jobs: - "1.18" - "1.19" - "1.20" + - "1.21" name: run tests with go version ${{ matrix.go }} steps: - name: install go diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e430e128..0a82511b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,14 +22,14 @@ jobs: run: go version - name: Install GoReleaser - uses: goreleaser/goreleaser-action@v4 + uses: goreleaser/goreleaser-action@v5 with: install-only: true - name: Show GoReleaser version run: goreleaser -v - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v4 + uses: goreleaser/goreleaser-action@v5 if: success() && startsWith(github.ref, 'refs/tags/') with: # either 'goreleaser' (default) or 'goreleaser-pro' diff --git a/.github/workflows/release_check.yml b/.github/workflows/release_check.yml index 4b022a57..05c0471e 100644 --- a/.github/workflows/release_check.yml +++ b/.github/workflows/release_check.yml @@ -20,14 +20,14 @@ jobs: run: go version - name: Install GoReleaser - uses: goreleaser/goreleaser-action@v4 + uses: goreleaser/goreleaser-action@v5 with: install-only: true - name: Show GoReleaser version run: goreleaser -v - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v4 + uses: goreleaser/goreleaser-action@v5 with: # either 'goreleaser' (default) or 'goreleaser-pro' distribution: goreleaser diff --git a/.goreleaser.yml b/.goreleaser.yml index 1c2fc125..9f7dd481 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -19,6 +19,17 @@ archives: {{- else if eq .Arch "386" }}i386 {{- else }}{{ .Arch }}{{ end }} +kos: + - repository: abice/go-enum + tags: + - "{{.Version}}" + - latest + bare: true + preserve_import_paths: false + platforms: + - linux/amd64 + - linux/arm64 + snapshot: name_template: "{{ incpatch .Version }}-next" changelog: diff --git a/go.mod b/go.mod index a1988e29..4288a88b 100644 --- a/go.mod +++ b/go.mod @@ -6,13 +6,13 @@ require ( github.com/Masterminds/sprig/v3 v3.2.3 github.com/bradleyjkemp/cupaloy/v2 v2.8.0 github.com/golang/mock v1.6.0 - github.com/labstack/gommon v0.4.0 + github.com/labstack/gommon v0.4.1 github.com/mattn/goveralls v0.0.12 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.25.7 - golang.org/x/text v0.13.0 - golang.org/x/tools v0.13.0 + golang.org/x/text v0.14.0 + golang.org/x/tools v0.15.0 golang.org/x/tools/cmd/cover v0.1.0-deprecated ) @@ -26,7 +26,7 @@ require ( github.com/imdario/mergo v0.3.13 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.16 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect @@ -35,8 +35,8 @@ require ( github.com/spf13/cast v1.3.1 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect golang.org/x/crypto v0.3.0 // indirect - golang.org/x/mod v0.12.0 // indirect - golang.org/x/sys v0.12.0 // indirect + golang.org/x/mod v0.14.0 // indirect + golang.org/x/sys v0.14.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index ddc12eaf..52f906d4 100644 --- a/go.sum +++ b/go.sum @@ -29,14 +29,13 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/labstack/gommon v0.4.0 h1:y7cvthEAEbU0yHOf4axH8ZG2NH8knB9iNSoTO8dyIk8= -github.com/labstack/gommon v0.4.0/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= -github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/labstack/gommon v0.4.1 h1:gqEff0p/hTENGMABzezPoPSRtIh1Cvw0ueMOe0/dfOk= +github.com/labstack/gommon v0.4.1/go.mod h1:TyTrpPqxR5KMk8LKVtLmfMjeQ5FEkBYdxLYPw/WfrOM= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/goveralls v0.0.12 h1:PEEeF0k1SsTjOBQ8FOmrOAoCu4ytuMaWCnWe94zxbCg= github.com/mattn/goveralls v0.0.12/go.mod h1:44ImGEUfmqH8bBtaMrYKsM65LXfNLWmwaxFGjZwgMSQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= @@ -63,13 +62,10 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= @@ -83,8 +79,8 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -103,17 +99,15 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -125,16 +119,16 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= -golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= +golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= golang.org/x/tools/cmd/cover v0.1.0-deprecated h1:Rwy+mWYz6loAF+LnG1jHG/JWMHRMMC2/1XX3Ejkx9lA= golang.org/x/tools/cmd/cover v0.1.0-deprecated/go.mod h1:hMDiIvlpN1NoVgmjLjUJE9tMHyxHjFX7RuQ+rW12mSA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -146,7 +140,6 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EV gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 4e336ab1eef14107dc5292e3585ad08f15d2b231 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Mon, 13 Nov 2023 07:34:33 -0700 Subject: [PATCH 78/91] add docker login action --- .github/workflows/release.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0a82511b..7cf638a1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,6 +28,12 @@ jobs: - name: Show GoReleaser version run: goreleaser -v + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Run GoReleaser uses: goreleaser/goreleaser-action@v5 if: success() && startsWith(github.ref, 'refs/tags/') From f2bc4fe0810071d365417dd2e3ce1b4d64b82c47 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Mon, 13 Nov 2023 09:41:23 -0700 Subject: [PATCH 79/91] use go base image --- .github/workflows/build_and_test.yml | 3 --- .goreleaser.yml | 1 + .ko.yaml | 19 +++++++++++++++++++ Makefile | 14 ++++++-------- README.md | 8 ++++++++ 5 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 .ko.yaml diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 874c6fbf..8c8f891b 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -13,9 +13,6 @@ jobs: fail-fast: false matrix: go: - # Drop support of go 1.17 - - "1.18" - - "1.19" - "1.20" - "1.21" name: run tests with go version ${{ matrix.go }} diff --git a/.goreleaser.yml b/.goreleaser.yml index 9f7dd481..52ec91c0 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -21,6 +21,7 @@ archives: kos: - repository: abice/go-enum + base_image: cgr.dev/chainguard/go # need the go binary for formatting 🔧 purposes 🫤 tags: - "{{.Version}}" - latest diff --git a/.ko.yaml b/.ko.yaml new file mode 100644 index 00000000..ffab3c8d --- /dev/null +++ b/.ko.yaml @@ -0,0 +1,19 @@ +defaultBaseImage: cgr.dev/chainguard/go # For now, we need the go binary in order to format go files. +defaultPlatforms: + - linux/arm64 + - linux/amd64 + +builds: + - id: go-enum + dir: . # default is . + main: . + flags: + - -tags + - netgo + ldflags: + - -s -w + - -extldflags "-static" + - -X "main.version={{.Env.VERSION}}" + - -X "main.commit={{.Env.COMMIT}}" + - -X "main.date={{.Env.DATE}}" + - -X "main.builtBy={{.Env.BUILT_BY}}" diff --git a/Makefile b/Makefile index 5074ad5d..bffaf9a6 100644 --- a/Makefile +++ b/Makefile @@ -99,28 +99,26 @@ bin/goveralls: go.sum $(call goinstall,github.com/mattn/goveralls) # snapshots: snapshots_1.17 -snapshots: snapshots_1.20 +snapshots: snapshots_1.21 snapshots_%: clean echo "##### updating snapshots for golang $* #####" docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:$* -c './update-snapshots.sh || true' .PHONY: ci -# ci: docker_1.16 -# ci: docker_1.17 -ci: docker_1.18 -ci: docker_1.19 ci: docker_1.20 +ci: docker_1.21 docker_%: echo "##### testing golang $* #####" docker run -i -t -w /app -v $(shell pwd):/app --entrypoint /bin/sh golang:$* -c 'make clean && make' .PHONY: pullimages -pullimages: pullimage_1.17 -pullimages: pullimage_1.18 -pullimages: pullimage_1.19 pullimages: pullimage_1.20 +pullimages: pullimage_1.21 pullimage_%: docker pull golang:$* + +build_docker: + KO_DOCKER_REPO=abice/go-enum VERSION=$(GITHUB_REF) COMMIT=$(GITHUB_SHA) DATE=$(DATE) BUILT_BY=$(USER) ko build --bare --local diff --git a/README.md b/README.md index a736c57e..f8f926d8 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,14 @@ It's not perfect, but I think it's useful. I took the output of the [Stringer](https://godoc.org/golang.org/x/tools/cmd/stringer) command as the `String()` method, and added a way to parse a string value. +## Docker image + +You can now use a docker image directly for running the command if you do not wish to install anything! + +```shell + docker run -w /app -v $(pwd):/app abice/go-enum:$(GO_ENUM_VERSION) +``` + ## Installation You can now download a release directly from github and use that for generating your enums! (Thanks to [GoReleaser](https://github.com/goreleaser/goreleaser-action)) From 28240c662a5ec517eea3b58d6aa7743af31ae0a7 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Mon, 18 Dec 2023 08:20:48 -0700 Subject: [PATCH 80/91] pass 0 to let go parse the base value (#229) --- Makefile | 4 +- example/diff_base.go | 20 ++++++++ example/diff_base_enum.go | 87 ++++++++++++++++++++++++++++++++ example/diff_base_test.go | 60 ++++++++++++++++++++++ generator/generator.go | 35 +++++++------ generator/generator_1.18_test.go | 11 ++-- generator/generator_test.go | 9 ++-- main.go | 4 +- 8 files changed, 202 insertions(+), 28 deletions(-) create mode 100644 example/diff_base.go create mode 100644 example/diff_base_enum.go create mode 100644 example/diff_base_test.go diff --git a/Makefile b/Makefile index bffaf9a6..b23cf471 100644 --- a/Makefile +++ b/Makefile @@ -49,8 +49,8 @@ fmt: -$(GO) fmt ./... test: gen-test generate - $(GO) test -v -race -coverprofile=coverage.out ./... - $(GO) test -v -race --tags=example ./example + $(GO) test -v -race -shuffle on -coverprofile=coverage.out ./... + $(GO) test -v -race -shuffle on --tags=example ./example cover: gen-test test $(GO) tool cover -html=coverage.out -o coverage.html diff --git a/example/diff_base.go b/example/diff_base.go new file mode 100644 index 00000000..860d4cc2 --- /dev/null +++ b/example/diff_base.go @@ -0,0 +1,20 @@ +package example + +//go:generate ../bin/go-enum --forcelower -b example + +/* +ENUM( + + B3 = 03 + B4 = 04 + B5 = 5 + B6 = 0b110 + B7 = 0b111 + B8 = 0x08 + B9 = 0x09 + B10 = 0x0B + B11 = 0x2B + +) +*/ +type DiffBase int diff --git a/example/diff_base_enum.go b/example/diff_base_enum.go new file mode 100644 index 00000000..050758d1 --- /dev/null +++ b/example/diff_base_enum.go @@ -0,0 +1,87 @@ +// Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example + +//go:build example +// +build example + +package example + +import ( + "errors" + "fmt" +) + +const ( + // DiffBaseB3 is a DiffBase of type B3. + DiffBaseB3 DiffBase = iota + 3 + // DiffBaseB4 is a DiffBase of type B4. + DiffBaseB4 + // DiffBaseB5 is a DiffBase of type B5. + DiffBaseB5 + // DiffBaseB6 is a DiffBase of type B6. + DiffBaseB6 + // DiffBaseB7 is a DiffBase of type B7. + DiffBaseB7 + // DiffBaseB8 is a DiffBase of type B8. + DiffBaseB8 + // DiffBaseB9 is a DiffBase of type B9. + DiffBaseB9 + // DiffBaseB10 is a DiffBase of type B10. + DiffBaseB10 DiffBase = iota + 4 + // DiffBaseB11 is a DiffBase of type B11. + DiffBaseB11 DiffBase = iota + 35 +) + +var ErrInvalidDiffBase = errors.New("not a valid DiffBase") + +const _DiffBaseName = "b3b4b5b6b7b8b9b10b11" + +var _DiffBaseMap = map[DiffBase]string{ + DiffBaseB3: _DiffBaseName[0:2], + DiffBaseB4: _DiffBaseName[2:4], + DiffBaseB5: _DiffBaseName[4:6], + DiffBaseB6: _DiffBaseName[6:8], + DiffBaseB7: _DiffBaseName[8:10], + DiffBaseB8: _DiffBaseName[10:12], + DiffBaseB9: _DiffBaseName[12:14], + DiffBaseB10: _DiffBaseName[14:17], + DiffBaseB11: _DiffBaseName[17:20], +} + +// String implements the Stringer interface. +func (x DiffBase) String() string { + if str, ok := _DiffBaseMap[x]; ok { + return str + } + return fmt.Sprintf("DiffBase(%d)", x) +} + +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x DiffBase) IsValid() bool { + _, ok := _DiffBaseMap[x] + return ok +} + +var _DiffBaseValue = map[string]DiffBase{ + _DiffBaseName[0:2]: DiffBaseB3, + _DiffBaseName[2:4]: DiffBaseB4, + _DiffBaseName[4:6]: DiffBaseB5, + _DiffBaseName[6:8]: DiffBaseB6, + _DiffBaseName[8:10]: DiffBaseB7, + _DiffBaseName[10:12]: DiffBaseB8, + _DiffBaseName[12:14]: DiffBaseB9, + _DiffBaseName[14:17]: DiffBaseB10, + _DiffBaseName[17:20]: DiffBaseB11, +} + +// ParseDiffBase attempts to convert a string to a DiffBase. +func ParseDiffBase(name string) (DiffBase, error) { + if x, ok := _DiffBaseValue[name]; ok { + return x, nil + } + return DiffBase(0), fmt.Errorf("%s is %w", name, ErrInvalidDiffBase) +} diff --git a/example/diff_base_test.go b/example/diff_base_test.go new file mode 100644 index 00000000..9f5625b8 --- /dev/null +++ b/example/diff_base_test.go @@ -0,0 +1,60 @@ +//go:build example +// +build example + +package example + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestDiffBase(t *testing.T) { + tests := map[string]struct { + actual int + expected DiffBase + }{ + "DiffBaseB3": { + actual: 3, + expected: DiffBaseB3, + }, + "DiffBaseB4": { + actual: 4, + expected: DiffBaseB4, + }, + "DiffBaseB5": { + actual: 5, + expected: DiffBaseB5, + }, + "DiffBaseB6": { + actual: 6, + expected: DiffBaseB6, + }, + "DiffBaseB7": { + actual: 7, + expected: DiffBaseB7, + }, + "DiffBaseB8": { + actual: 8, + expected: DiffBaseB8, + }, + "DiffBaseB9": { + actual: 9, + expected: DiffBaseB9, + }, + "DiffBaseB10": { + actual: 11, + expected: DiffBaseB10, + }, + "DiffBaseB11": { + actual: 43, + expected: DiffBaseB11, + }, + } + + for name, tc := range tests { + t.Run(name, func(t *testing.T) { + assert.Equal(t, int(tc.expected), tc.actual) + }) + } +} diff --git a/generator/generator.go b/generator/generator.go index 3b9fef45..35e60949 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -25,8 +25,6 @@ const ( parseCommentPrefix = `//` ) -var replacementNames = map[string]string{} - // Generator is responsible for generating validation files for the given in a go source file. type Generator struct { Version string @@ -56,6 +54,7 @@ type Generator struct { forceUpper bool noComments bool buildTags []string + replacementNames map[string]string } // Enum holds data for a discovered enum in the parsed source @@ -90,6 +89,7 @@ func NewGenerator() *Generator { t: template.New("generator"), fileSet: token.NewFileSet(), noPrefix: false, + replacementNames: map[string]string{}, } funcs := sprig.TxtFuncMap() @@ -224,12 +224,21 @@ func (g *Generator) WithBuildTags(tags ...string) *Generator { return g } +// WithAliases will set up aliases for the generator. +func (g *Generator) WithAliases(aliases map[string]string) *Generator { + if aliases == nil { + return g + } + g.replacementNames = aliases + return g +} + func (g *Generator) anySQLEnabled() bool { return g.sql || g.sqlNullStr || g.sqlint || g.sqlNullInt } // ParseAliases is used to add aliases to replace during name sanitization. -func ParseAliases(aliases []string) error { +func ParseAliases(aliases []string) (map[string]string, error) { aliasMap := map[string]string{} for _, str := range aliases { @@ -237,17 +246,13 @@ func ParseAliases(aliases []string) error { for _, kvp := range kvps { parts := strings.Split(kvp, ":") if len(parts) != 2 { - return fmt.Errorf("invalid formatted alias entry %q, must be in the format \"key:value\"", kvp) + return nil, fmt.Errorf("invalid formatted alias entry %q, must be in the format \"key:value\"", kvp) } aliasMap[parts[0]] = parts[1] } } - for k, v := range aliasMap { - replacementNames[k] = v - } - - return nil + return aliasMap, nil } // WithTemplates is used to provide the filenames of additional templates. @@ -438,7 +443,7 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { valueStr = dataVal rawName = value[:equalIndex] if enum.Type == "string" { - if parsed, err := strconv.ParseInt(dataVal, 10, 64); err == nil { + if parsed, err := strconv.ParseInt(dataVal, 0, 64); err == nil { data = parsed valueStr = rawName } @@ -446,7 +451,7 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { valueStr = trimQuotes(dataVal) } } else if unsigned { - newData, err := strconv.ParseUint(dataVal, 10, 64) + newData, err := strconv.ParseUint(dataVal, 0, 64) if err != nil { err = fmt.Errorf("failed parsing the data part of enum value '%s': %w", value, err) fmt.Println(err) @@ -454,7 +459,7 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { } data = newData } else { - newData, err := strconv.ParseInt(dataVal, 10, 64) + newData, err := strconv.ParseInt(dataVal, 0, 64) if err != nil { err = fmt.Errorf("failed parsing the data part of enum value '%s': %w", value, err) fmt.Println(err) @@ -473,7 +478,7 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { prefixedName := name if name != skipHolder { prefixedName = enum.Prefix + name - prefixedName = sanitizeValue(prefixedName) + prefixedName = g.sanitizeValue(prefixedName) if !g.leaveSnakeCase { prefixedName = snakeToCamelCase(prefixedName) } @@ -526,14 +531,14 @@ func unescapeComment(comment string) string { // identifier syntax as described here: https://golang.org/ref/spec#Identifiers // identifier = letter { letter | unicode_digit } // where letter can be unicode_letter or '_' -func sanitizeValue(value string) string { +func (g *Generator) sanitizeValue(value string) string { // Keep skip value holders if value == skipHolder { return skipHolder } replacedValue := value - for k, v := range replacementNames { + for k, v := range g.replacementNames { replacedValue = strings.ReplaceAll(replacedValue, k, v) } diff --git a/generator/generator_1.18_test.go b/generator/generator_1.18_test.go index fd536b36..1da1d717 100644 --- a/generator/generator_1.18_test.go +++ b/generator/generator_1.18_test.go @@ -217,10 +217,7 @@ func Test118AliasParsing(t *testing.T) { for name, tc := range tests { t.Run(name, func(t *testing.T) { - defer func() { - replacementNames = map[string]string{} - }() - err := ParseAliases(tc.input) + replacementNames, err := ParseAliases(tc.input) if tc.err != nil { require.Error(t, err) require.EqualError(t, err, tc.err.Error()) @@ -306,9 +303,11 @@ func Test118Aliasing(t *testing.T) { // ENUM(a,b,CDEF) with some extra text type Animal int ` + aliases, err := ParseAliases([]string{"CDEF:C"}) + require.NoError(t, err) g := NewGenerator(). - WithoutSnakeToCamel() - _ = ParseAliases([]string{"CDEF:C"}) + WithoutSnakeToCamel(). + WithAliases(aliases) f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) assert.Nil(t, err, "Error parsing no struct input") diff --git a/generator/generator_test.go b/generator/generator_test.go index 3732a0b6..fcae16ca 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -240,8 +240,7 @@ func TestAliasParsing(t *testing.T) { for name, tc := range tests { t.Run(name, func(t *testing.T) { - replacementNames = map[string]string{} - err := ParseAliases(tc.input) + replacementNames, err := ParseAliases(tc.input) if tc.err != nil { require.Error(t, err) require.EqualError(t, err, tc.err.Error()) @@ -327,9 +326,11 @@ func TestAliasing(t *testing.T) { // ENUM(a,b,CDEF) with some extra text type Animal int ` + aliases, err := ParseAliases([]string{"CDEF:C"}) + require.NoError(t, err) g := NewGenerator(). - WithoutSnakeToCamel() - _ = ParseAliases([]string{"CDEF:C"}) + WithoutSnakeToCamel(). + WithAliases(aliases) f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) assert.Nil(t, err, "Error parsing no struct input") diff --git a/main.go b/main.go index d57e3b77..10c166e0 100644 --- a/main.go +++ b/main.go @@ -176,7 +176,8 @@ func main() { }, }, Action: func(ctx *cli.Context) error { - if err := generator.ParseAliases(argv.Aliases.Value()); err != nil { + aliases, err := generator.ParseAliases(argv.Aliases.Value()) + if err != nil { return err } for _, fileOption := range argv.FileNames.Value() { @@ -188,6 +189,7 @@ func main() { g.BuiltBy = builtBy g.WithBuildTags(argv.BuildTags.Value()...) + g.WithAliases(aliases) if argv.NoPrefix { g.WithNoPrefix() From 5c7021c12ee74a62b820e8e82984bae3f03a5227 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 15:24:41 +0000 Subject: [PATCH 81/91] Bump github.com/urfave/cli/v2 from 2.25.7 to 2.26.0 (#225) --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 4288a88b..361bde79 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/mattn/goveralls v0.0.12 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.4 - github.com/urfave/cli/v2 v2.25.7 + github.com/urfave/cli/v2 v2.26.0 golang.org/x/text v0.14.0 golang.org/x/tools v0.15.0 golang.org/x/tools/cmd/cover v0.1.0-deprecated diff --git a/go.sum b/go.sum index 52f906d4..865068e0 100644 --- a/go.sum +++ b/go.sum @@ -64,8 +64,8 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= -github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/urfave/cli/v2 v2.26.0 h1:3f3AMg3HpThFNT4I++TKOejZO8yU55t3JnnSr4S4QEI= +github.com/urfave/cli/v2 v2.26.0/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= From 1f464a3a06fd3588e0153d9e610f915c69b9671e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 08:38:05 -0700 Subject: [PATCH 82/91] Bump golang.org/x/tools from 0.15.0 to 0.16.1 (#227) Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.15.0 to 0.16.1. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.15.0...v0.16.1) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 361bde79..a53ed7cb 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.26.0 golang.org/x/text v0.14.0 - golang.org/x/tools v0.15.0 + golang.org/x/tools v0.16.1 golang.org/x/tools/cmd/cover v0.1.0-deprecated ) diff --git a/go.sum b/go.sum index 865068e0..58c8645d 100644 --- a/go.sum +++ b/go.sum @@ -127,8 +127,8 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= -golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= -golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= +golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA= +golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= golang.org/x/tools/cmd/cover v0.1.0-deprecated h1:Rwy+mWYz6loAF+LnG1jHG/JWMHRMMC2/1XX3Ejkx9lA= golang.org/x/tools/cmd/cover v0.1.0-deprecated/go.mod h1:hMDiIvlpN1NoVgmjLjUJE9tMHyxHjFX7RuQ+rW12mSA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 2f169760d0d38d21ed0aecf15bae2d8e1bab6142 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 08:46:28 -0700 Subject: [PATCH 83/91] Bump actions/setup-go from 4 to 5 (#226) Bumps [actions/setup-go](https://github.com/actions/setup-go) from 4 to 5. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-go dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build_and_test.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/release_check.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 8c8f891b..55d9957d 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -18,7 +18,7 @@ jobs: name: run tests with go version ${{ matrix.go }} steps: - name: install go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: ${{ matrix.go }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7cf638a1..3dfc6b15 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,7 @@ jobs: fetch-depth: 0 - name: Set up Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: ">=1.20.2" - name: Ensure Go diff --git a/.github/workflows/release_check.yml b/.github/workflows/release_check.yml index 05c0471e..498e0dab 100644 --- a/.github/workflows/release_check.yml +++ b/.github/workflows/release_check.yml @@ -13,7 +13,7 @@ jobs: fetch-depth: 0 - name: Set up Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: ">=1.20.2" - name: Ensure Go From 919e61c0174b91303753ee3898569a01abb32c97 Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Mon, 18 Dec 2023 08:48:30 -0700 Subject: [PATCH 84/91] add a file suffix option (#230) --- .github/workflows/build_and_test.yml | 10 +++++- example/suffix.enum.gen.go | 46 ++++++++++++++++++++++++++++ example/suffix.enum.gen_test.go | 46 ++++++++++++++++++++++++++++ example/suffix.go | 9 ++++++ example/suffix_test.go | 29 ++++++++++++++++++ main.go | 16 ++++++++-- 6 files changed, 153 insertions(+), 3 deletions(-) create mode 100644 example/suffix.enum.gen.go create mode 100644 example/suffix.enum.gen_test.go create mode 100644 example/suffix.go create mode 100644 example/suffix_test.go diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 55d9957d..99a4776e 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -33,11 +33,19 @@ jobs: COVERALLS_TOKEN: ${{ secrets.COVERALLS_TOKEN }} run: | make cover + + - name: Coveralls + if: (matrix.go == '1.21') + env: + COVERALLS_TOKEN: ${{ secrets.COVERALLS_TOKEN }} + run: | if [[ -n "$COVERALLS_TOKEN" ]]; then make coveralls fi + - name: Upload coverage - uses: actions/upload-artifact@v3 + if: (matrix.go == '1.21') + uses: actions/upload-artifact@v4 with: name: coverage path: coverage.* diff --git a/example/suffix.enum.gen.go b/example/suffix.enum.gen.go new file mode 100644 index 00000000..cd739a22 --- /dev/null +++ b/example/suffix.enum.gen.go @@ -0,0 +1,46 @@ +// Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example + +//go:build example +// +build example + +package example + +import ( + "errors" + "fmt" +) + +const ( + // SuffixGen is a Suffix of type gen. + SuffixGen Suffix = "gen" +) + +var ErrInvalidSuffix = errors.New("not a valid Suffix") + +// String implements the Stringer interface. +func (x Suffix) String() string { + return string(x) +} + +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x Suffix) IsValid() bool { + _, err := ParseSuffix(string(x)) + return err == nil +} + +var _SuffixValue = map[string]Suffix{ + "gen": SuffixGen, +} + +// ParseSuffix attempts to convert a string to a Suffix. +func ParseSuffix(name string) (Suffix, error) { + if x, ok := _SuffixValue[name]; ok { + return x, nil + } + return Suffix(""), fmt.Errorf("%s is %w", name, ErrInvalidSuffix) +} diff --git a/example/suffix.enum.gen_test.go b/example/suffix.enum.gen_test.go new file mode 100644 index 00000000..265a8053 --- /dev/null +++ b/example/suffix.enum.gen_test.go @@ -0,0 +1,46 @@ +// Code generated by go-enum DO NOT EDIT. +// Version: example +// Revision: example +// Build Date: example +// Built By: example + +//go:build example +// +build example + +package example + +import ( + "errors" + "fmt" +) + +const ( + // SuffixTestSomeItem is a SuffixTest of type some_item. + SuffixTestSomeItem SuffixTest = "some_item" +) + +var ErrInvalidSuffixTest = errors.New("not a valid SuffixTest") + +// String implements the Stringer interface. +func (x SuffixTest) String() string { + return string(x) +} + +// IsValid provides a quick way to determine if the typed value is +// part of the allowed enumerated values +func (x SuffixTest) IsValid() bool { + _, err := ParseSuffixTest(string(x)) + return err == nil +} + +var _SuffixTestValue = map[string]SuffixTest{ + "some_item": SuffixTestSomeItem, +} + +// ParseSuffixTest attempts to convert a string to a SuffixTest. +func ParseSuffixTest(name string) (SuffixTest, error) { + if x, ok := _SuffixTestValue[name]; ok { + return x, nil + } + return SuffixTest(""), fmt.Errorf("%s is %w", name, ErrInvalidSuffixTest) +} diff --git a/example/suffix.go b/example/suffix.go new file mode 100644 index 00000000..e757bf21 --- /dev/null +++ b/example/suffix.go @@ -0,0 +1,9 @@ +//go:generate ../bin/go-enum -b example --output-suffix .enum.gen + +//go:build example +// +build example + +package example + +// Suffix ENUM(gen) +type Suffix string diff --git a/example/suffix_test.go b/example/suffix_test.go new file mode 100644 index 00000000..d8f03442 --- /dev/null +++ b/example/suffix_test.go @@ -0,0 +1,29 @@ +//go:generate ../bin/go-enum -b example --output-suffix .enum.gen + +//go:build example +// +build example + +package example + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +// SuffixTest ENUM(some_item) +type SuffixTest string + +func TestSuffix(t *testing.T) { + x := Suffix("") + assert.Equal(t, "", x.String()) + + assert.Equal(t, Suffix("gen"), SuffixGen) +} + +func TestSuffixTest(t *testing.T) { + x := SuffixTest("") + assert.Equal(t, "", x.String()) + + assert.Equal(t, SuffixTest("some_item"), SuffixTestSomeItem) +} diff --git a/main.go b/main.go index 10c166e0..94ec6c3e 100644 --- a/main.go +++ b/main.go @@ -42,6 +42,7 @@ type rootT struct { ForceLower bool ForceUpper bool NoComments bool + OutputSuffix string } func main() { @@ -174,6 +175,11 @@ func main() { Usage: "Adds build tags to a generated enum file.", Destination: &argv.BuildTags, }, + &cli.StringFlag{ + Name: "output-suffix", + Usage: "Changes the default filename suffix of _enum to something else. `.go` will be appended to the end of the string no matter what, so that `_test.go` cases can be accommodated ", + Destination: &argv.OutputSuffix, + }, }, Action: func(ctx *cli.Context) error { aliases, err := generator.ParseAliases(argv.Aliases.Value()) @@ -262,14 +268,20 @@ func main() { filenames = fn } + outputSuffix := `_enum` + if argv.OutputSuffix != "" { + outputSuffix = argv.OutputSuffix + } + for _, fileName := range filenames { originalName := fileName out("go-enum started. file: %s\n", color.Cyan(originalName)) fileName, _ = filepath.Abs(fileName) - outFilePath := fmt.Sprintf("%s_enum.go", strings.TrimSuffix(fileName, filepath.Ext(fileName))) + + outFilePath := fmt.Sprintf("%s%s.go", strings.TrimSuffix(fileName, filepath.Ext(fileName)), outputSuffix) if strings.HasSuffix(fileName, "_test.go") { - outFilePath = strings.Replace(outFilePath, "_test_enum.go", "_enum_test.go", 1) + outFilePath = strings.Replace(outFilePath, "_test"+outputSuffix+".go", outputSuffix+"_test.go", 1) } // Parse the file given in arguments From 6ab3946f24f4e8279964e115ad3221847f1b56f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 23 Dec 2023 07:54:05 -0700 Subject: [PATCH 85/91] Bump golang.org/x/crypto from 0.3.0 to 0.17.0 (#231) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.3.0 to 0.17.0. - [Commits](https://github.com/golang/crypto/compare/v0.3.0...v0.17.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index a53ed7cb..c6591ace 100644 --- a/go.mod +++ b/go.mod @@ -34,9 +34,9 @@ require ( github.com/shopspring/decimal v1.2.0 // indirect github.com/spf13/cast v1.3.1 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - golang.org/x/crypto v0.3.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/mod v0.14.0 // indirect - golang.org/x/sys v0.14.0 // indirect + golang.org/x/sys v0.15.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 58c8645d..d75244ff 100644 --- a/go.sum +++ b/go.sum @@ -73,8 +73,9 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.3.0 h1:a06MkbcxBrEFc0w0QIZWXrH/9cCX6KJyWbBOIwAn+7A= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= @@ -106,8 +107,8 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= From d8120d395f1695f8fc6d5aa158701a13b97b6aa2 Mon Sep 17 00:00:00 2001 From: Stas Afanasev Date: Sun, 24 Mar 2024 16:02:54 +0100 Subject: [PATCH 86/91] Update README.md (#238) Fixed broken `_example` links in `README.md` Signed-off-by: Stas Afanasev --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f8f926d8..98417b9c 100644 --- a/README.md +++ b/README.md @@ -119,10 +119,10 @@ I did not specify any overrides on the release binary names, so `uname -s` and ` If you prefer makefile stuff, you can always do something like this: ```Makefile -STANDARD_ENUMS = ./_example/animal_enum.go \ - ./_example/color_enum.go +STANDARD_ENUMS = ./example/animal_enum.go \ + ./example/color_enum.go -NULLABLE_ENUMS = ./_example/sql_enum.go +NULLABLE_ENUMS = ./example/sql_enum.go $(STANDARD_ENUMS): GO_ENUM_FLAGS=--nocase --marshal --names --ptr $(NULLABLE_ENUMS): GO_ENUM_FLAGS=--nocase --marshal --names --sqlnullint --ptr @@ -220,7 +220,7 @@ const ( #### Example -There are a few examples in the `_example` [directory](_example). +There are a few examples in the `example` [directory](./example/). I've included one here for easy access, but can't guarantee it's up to date. ``` go From cdc720743bbedb3dac586dd7b3d55ccd8995a82c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jul 2024 14:08:48 -0700 Subject: [PATCH 87/91] Bump github.com/urfave/cli/v2 from 2.26.0 to 2.27.2 (#240) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.26.0 to 2.27.2. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.26.0...v2.27.2) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index c6591ace..a2796e23 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/mattn/goveralls v0.0.12 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.4 - github.com/urfave/cli/v2 v2.26.0 + github.com/urfave/cli/v2 v2.27.2 golang.org/x/text v0.14.0 golang.org/x/tools v0.16.1 golang.org/x/tools/cmd/cover v0.1.0-deprecated @@ -19,7 +19,7 @@ require ( require ( github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.2.0 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/google/uuid v1.3.0 // indirect github.com/huandu/xstrings v1.3.3 // indirect @@ -33,7 +33,7 @@ require ( github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shopspring/decimal v1.2.0 // indirect github.com/spf13/cast v1.3.1 // indirect - github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect + github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect golang.org/x/crypto v0.17.0 // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/sys v0.15.0 // indirect diff --git a/go.sum b/go.sum index d75244ff..04593d29 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= github.com/bradleyjkemp/cupaloy/v2 v2.8.0 h1:any4BmKE+jGIaMpnU8YgH/I2LPiLBufr6oMMlVBbn9M= github.com/bradleyjkemp/cupaloy/v2 v2.8.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1lps46Enkdqw6aRX0= -github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -64,10 +64,10 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/urfave/cli/v2 v2.26.0 h1:3f3AMg3HpThFNT4I++TKOejZO8yU55t3JnnSr4S4QEI= -github.com/urfave/cli/v2 v2.26.0/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/urfave/cli/v2 v2.27.2 h1:6e0H+AkS+zDckwPCUrZkKX38mRaau4nL2uipkJpbkcI= +github.com/urfave/cli/v2 v2.27.2/go.mod h1:g0+79LmHHATl7DAcHO99smiR/T7uGLw84w8Y42x+4eM= +github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 h1:+qGGcbkzsfDQNPPe9UDgpxAWQrhbbBXOYJFQDq/dtJw= +github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913/go.mod h1:4aEEwZQutDLsQv2Deui4iYQ6DWTxR14g6m8Wv88+Xqk= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= From 1b2c45d7feefedde030c8b274909635d4dfe9bfc Mon Sep 17 00:00:00 2001 From: Alex Bice Date: Fri, 12 Jul 2024 15:14:25 -0700 Subject: [PATCH 88/91] update dependabot to groups (#244) --- .github/dependabot.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 07ab2815..9f0289b1 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -4,7 +4,21 @@ updates: directory: / schedule: interval: weekly + groups: + major: + update-types: + - major + minor: + update-types: + - minor + - patch - package-ecosystem: github-actions directory: "/" schedule: interval: weekly + groups: + actions: + update-types: + - major + - minor + - patch From 51a08972c91f74cddf93226c7258146dd2a13011 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jul 2024 22:17:15 +0000 Subject: [PATCH 89/91] Bump the minor group with 4 updates (#245) --- go.mod | 12 ++++++------ go.sum | 25 +++++++++++++------------ 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/go.mod b/go.mod index a2796e23..ac233700 100644 --- a/go.mod +++ b/go.mod @@ -6,13 +6,13 @@ require ( github.com/Masterminds/sprig/v3 v3.2.3 github.com/bradleyjkemp/cupaloy/v2 v2.8.0 github.com/golang/mock v1.6.0 - github.com/labstack/gommon v0.4.1 + github.com/labstack/gommon v0.4.2 github.com/mattn/goveralls v0.0.12 github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/urfave/cli/v2 v2.27.2 - golang.org/x/text v0.14.0 - golang.org/x/tools v0.16.1 + golang.org/x/text v0.16.0 + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d golang.org/x/tools/cmd/cover v0.1.0-deprecated ) @@ -35,8 +35,8 @@ require ( github.com/spf13/cast v1.3.1 // indirect github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect golang.org/x/crypto v0.17.0 // indirect - golang.org/x/mod v0.14.0 // indirect - golang.org/x/sys v0.15.0 // indirect + golang.org/x/mod v0.17.0 // indirect + golang.org/x/sys v0.20.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 04593d29..3ba5bb16 100644 --- a/go.sum +++ b/go.sum @@ -29,8 +29,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/labstack/gommon v0.4.1 h1:gqEff0p/hTENGMABzezPoPSRtIh1Cvw0ueMOe0/dfOk= -github.com/labstack/gommon v0.4.1/go.mod h1:TyTrpPqxR5KMk8LKVtLmfMjeQ5FEkBYdxLYPw/WfrOM= +github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= +github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -62,8 +62,8 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/urfave/cli/v2 v2.27.2 h1:6e0H+AkS+zDckwPCUrZkKX38mRaau4nL2uipkJpbkcI= github.com/urfave/cli/v2 v2.27.2/go.mod h1:g0+79LmHHATl7DAcHO99smiR/T7uGLw84w8Y42x+4eM= github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 h1:+qGGcbkzsfDQNPPe9UDgpxAWQrhbbBXOYJFQDq/dtJw= @@ -80,8 +80,8 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -94,6 +94,7 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -107,8 +108,8 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -120,16 +121,16 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= -golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA= -golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools/cmd/cover v0.1.0-deprecated h1:Rwy+mWYz6loAF+LnG1jHG/JWMHRMMC2/1XX3Ejkx9lA= golang.org/x/tools/cmd/cover v0.1.0-deprecated/go.mod h1:hMDiIvlpN1NoVgmjLjUJE9tMHyxHjFX7RuQ+rW12mSA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From a6f63bddde05aca4221df9c8e9e6d7d9674b1cb4 Mon Sep 17 00:00:00 2001 From: Tarcisio Gruppi Date: Mon, 10 Mar 2025 11:59:40 -0300 Subject: [PATCH 90/91] fix: fixed generation of string enums with one char being a single or (#256) double quote --- generator/enum_string.tmpl | 2 +- generator/generator.go | 24 +++++++++-------- generator/generator_test.go | 51 +++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 12 deletions(-) diff --git a/generator/enum_string.tmpl b/generator/enum_string.tmpl index 41f16231..4fbb096f 100644 --- a/generator/enum_string.tmpl +++ b/generator/enum_string.tmpl @@ -10,7 +10,7 @@ const ( {{- if $value.Comment}} // {{$value.Comment}} {{- end}} - {{$value.PrefixedName}} {{$enumName}} = "{{$value.ValueStr}}" + {{$value.PrefixedName}} {{$enumName}} = {{quote $value.ValueStr}} {{- end}} ) {{if .names -}} diff --git a/generator/generator.go b/generator/generator.go index 35e60949..38b02eb9 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -99,6 +99,7 @@ func NewGenerator() *Generator { funcs["unmapify"] = Unmapify funcs["namify"] = Namify funcs["offset"] = Offset + funcs["quote"] = strconv.Quote g.t.Funcs(funcs) @@ -447,8 +448,8 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { data = parsed valueStr = rawName } - if isQuoted(dataVal) { - valueStr = trimQuotes(dataVal) + if q := identifyQuoted(dataVal); q != "" { + valueStr = trimQuotes(q, dataVal) } } else if unsigned { newData, err := strconv.ParseUint(dataVal, 0, 64) @@ -495,18 +496,19 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) { return enum, nil } -func isQuoted(s string) bool { +func identifyQuoted(s string) string { s = strings.TrimSpace(s) - return (strings.HasPrefix(s, `"`) && strings.HasSuffix(s, `"`)) || (strings.HasPrefix(s, `'`) && strings.HasSuffix(s, `'`)) + if strings.HasPrefix(s, `"`) && strings.HasSuffix(s, `"`) { + return `"` + } + if strings.HasPrefix(s, `'`) && strings.HasSuffix(s, `'`) { + return `'` + } + return "" } -func trimQuotes(s string) string { - s = strings.TrimSpace(s) - for _, quote := range []string{`"`, `'`} { - s = strings.TrimPrefix(s, quote) - s = strings.TrimSuffix(s, quote) - } - return s +func trimQuotes(q, s string) string { + return strings.TrimPrefix(strings.TrimSuffix(strings.TrimSpace(s), q), q) } func increment(d interface{}) interface{} { diff --git a/generator/generator_test.go b/generator/generator_test.go index fcae16ca..9cad7c7c 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -389,3 +389,54 @@ func TestQuotedStrings(t *testing.T) { fmt.Println(string(output)) } } + +func TestStringWithSingleDoubleQuoteValue(t *testing.T) { + input := `package test + // ENUM(DoubleQuote='"') + type Char string + ` + g := NewGenerator() + f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) + assert.Nil(t, err, "Error parsing no struct input") + + output, err := g.Generate(f) + assert.Nil(t, err, "Error generating formatted code") + assert.Contains(t, string(output), "CharDoubleQuote Char = \"\\\"\"") + if false { // Debugging statement + fmt.Println(string(output)) + } +} + +func TestStringWithSingleSingleQuoteValue(t *testing.T) { + input := `package test + // ENUM(SingleQuote="'") + type Char string + ` + g := NewGenerator() + f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) + assert.Nil(t, err, "Error parsing no struct input") + + output, err := g.Generate(f) + assert.Nil(t, err, "Error generating formatted code") + assert.Contains(t, string(output), "CharSingleQuote Char = \"'\"") + if false { // Debugging statement + fmt.Println(string(output)) + } +} + +func TestStringWithSingleBacktickValue(t *testing.T) { + input := `package test + // ENUM(SingleQuote="` + "`" + `") + type Char string + ` + g := NewGenerator() + f, err := parser.ParseFile(g.fileSet, "TestRequiredErrors", input, parser.ParseComments) + assert.Nil(t, err, "Error parsing no struct input") + + output, err := g.Generate(f) + assert.Nil(t, err, "Error generating formatted code") + assert.Contains(t, string(output), "CharSingleQuote Char = \"`\"") + if false { // Debugging statement + fmt.Println(string(output)) + } +} From 0979fc7bd6297900cf7c4b903f1d4b0d174537c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8C=97=E9=87=8E=20-=20Michael?= Date: Tue, 17 Jun 2025 19:28:10 +0800 Subject: [PATCH 91/91] add custom json package for imports instead encoding/json support (#267) --- example/sql_enum.go | 2 +- example/strings_only_enum.go | 2 +- generator/.snapshots/Test118CustomPrefixExampleFile-1.18 | 2 +- generator/.snapshots/Test118CustomPrefixExampleFile-og | 2 +- generator/.snapshots/TestCustomPrefixExampleFile | 2 +- generator/enum.tmpl | 1 + generator/generator.go | 9 +++++++++ main.go | 9 +++++++++ 8 files changed, 24 insertions(+), 5 deletions(-) diff --git a/example/sql_enum.go b/example/sql_enum.go index acd99411..11351d32 100644 --- a/example/sql_enum.go +++ b/example/sql_enum.go @@ -11,7 +11,7 @@ package example import ( "database/sql/driver" - "encoding/json" + json "encoding/json" "errors" "fmt" "strconv" diff --git a/example/strings_only_enum.go b/example/strings_only_enum.go index b08d60ab..3a2790ed 100644 --- a/example/strings_only_enum.go +++ b/example/strings_only_enum.go @@ -11,7 +11,7 @@ package example import ( "database/sql/driver" - "encoding/json" + json "encoding/json" "errors" "fmt" "strings" diff --git a/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 b/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 index 55722e07..efb75716 100644 --- a/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 +++ b/generator/.snapshots/Test118CustomPrefixExampleFile-1.18 @@ -9,7 +9,7 @@ (string) "", (string) (len=8) "import (", (string) (len=22) "\t\"database/sql/driver\"", - (string) (len=16) "\t\"encoding/json\"", + (string) (len=21) "\tjson \"encoding/json\"", (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strconv\"", diff --git a/generator/.snapshots/Test118CustomPrefixExampleFile-og b/generator/.snapshots/Test118CustomPrefixExampleFile-og index 7af76701..5921a187 100644 --- a/generator/.snapshots/Test118CustomPrefixExampleFile-og +++ b/generator/.snapshots/Test118CustomPrefixExampleFile-og @@ -9,7 +9,7 @@ (string) "", (string) (len=8) "import (", (string) (len=22) "\t\"database/sql/driver\"", - (string) (len=16) "\t\"encoding/json\"", + (string) (len=21) "\tjson \"encoding/json\"", (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strconv\"", diff --git a/generator/.snapshots/TestCustomPrefixExampleFile b/generator/.snapshots/TestCustomPrefixExampleFile index 7af76701..5921a187 100644 --- a/generator/.snapshots/TestCustomPrefixExampleFile +++ b/generator/.snapshots/TestCustomPrefixExampleFile @@ -9,7 +9,7 @@ (string) "", (string) (len=8) "import (", (string) (len=22) "\t\"database/sql/driver\"", - (string) (len=16) "\t\"encoding/json\"", + (string) (len=21) "\tjson \"encoding/json\"", (string) (len=9) "\t\"errors\"", (string) (len=6) "\t\"fmt\"", (string) (len=10) "\t\"strconv\"", diff --git a/generator/enum.tmpl b/generator/enum.tmpl index 574acdcd..d96d6d22 100644 --- a/generator/enum.tmpl +++ b/generator/enum.tmpl @@ -13,6 +13,7 @@ package {{.package}} import ( "fmt" + json "{{.jsonpkg}}" ) {{end -}} diff --git a/generator/generator.go b/generator/generator.go index 38b02eb9..61fd6ac3 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -45,6 +45,7 @@ type Generator struct { names bool values bool leaveSnakeCase bool + jsonPkg string prefix string sqlNullInt bool sqlNullStr bool @@ -90,6 +91,7 @@ func NewGenerator() *Generator { fileSet: token.NewFileSet(), noPrefix: false, replacementNames: map[string]string{}, + jsonPkg: "encoding/json", } funcs := sprig.TxtFuncMap() @@ -171,6 +173,12 @@ func (g *Generator) WithoutSnakeToCamel() *Generator { return g } +// WithJsonPkg is used to add a custom json package to the imports +func (g *Generator) WithJsonPkg(pkg string) *Generator { + g.jsonPkg = pkg + return g +} + // WithPrefix is used to add a custom prefix to the enum constants func (g *Generator) WithPrefix(prefix string) *Generator { g.prefix = prefix @@ -295,6 +303,7 @@ func (g *Generator) Generate(f *ast.File) ([]byte, error) { "buildDate": g.BuildDate, "builtBy": g.BuiltBy, "buildTags": g.buildTags, + "jsonpkg": g.jsonPkg, }) if err != nil { return nil, fmt.Errorf("failed writing header: %w", err) diff --git a/main.go b/main.go index 94ec6c3e..725a2701 100644 --- a/main.go +++ b/main.go @@ -28,6 +28,7 @@ type rootT struct { SQL bool SQLInt bool Flag bool + JsonPkg string Prefix string Names bool Values bool @@ -102,6 +103,11 @@ func main() { Usage: "Adds golang flag functions.", Destination: &argv.Flag, }, + &cli.StringFlag{ + Name: "jsonpkg", + Usage: "Custom json package for imports instead encoding/json.", + Destination: &argv.JsonPkg, + }, &cli.StringFlag{ Name: "prefix", Usage: "Adds a prefix with a user one. If you would like to replace the prefix, then combine this option with --noprefix.", @@ -227,6 +233,9 @@ func main() { if argv.LeaveSnakeCase { g.WithoutSnakeToCamel() } + if argv.JsonPkg != "" { + g.WithJsonPkg(argv.JsonPkg) + } if argv.Prefix != "" { g.WithPrefix(argv.Prefix) }