Skip to content

Commit 2485d8f

Browse files
LastPossumEgor Gartman
andauthored
Add non-ASCII enum values support (#97)
* Add non-ASCII enum values support * fix go1.18 tests Co-authored-by: Egor Gartman <evgartman@avito.ru>
1 parent 7e2e8bc commit 2485d8f

10 files changed

+1150
-29
lines changed

generator/.snapshots/Test118CustomPrefixExampleFile-og

Lines changed: 263 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
([]string) (len=3377) {
1+
([]string) (len=3639) {
22
(string) (len=41) "// Code generated by go-enum DO NOT EDIT.",
33
(string) (len=13) "// Version: -",
44
(string) (len=14) "// Revision: -",
@@ -2576,6 +2576,268 @@
25762576
(string) (len=1) "}",
25772577
(string) "",
25782578
(string) (len=7) "const (",
2579+
(string) (len=66) "\t// Custom_prefix_Продам is a NonASCII of type Продам.",
2580+
(string) (len=50) "\tCustom_prefix_Продам NonASCII = iota + 1114",
2581+
(string) (len=54) "\t// Custom_prefix_車庫 is a NonASCII of type 車庫.",
2582+
(string) (len=43) "\tCustom_prefix_車庫 NonASCII = iota + 299",
2583+
(string) (len=58) "\t// Custom_prefix_Էժան is a NonASCII of type Էժան.",
2584+
(string) (len=44) "\tCustom_prefix_Էժան NonASCII = iota + -1",
2585+
(string) (len=1) ")",
2586+
(string) "",
2587+
(string) (len=50) "const _NonASCIIName = \"Продам車庫էժան\"",
2588+
(string) "",
2589+
(string) (len=39) "var _NonASCIIMap = map[NonASCII]string{",
2590+
(string) (len=49) "\tCustom_prefix_Продам: _NonASCIIName[0:12],",
2591+
(string) (len=48) "\tCustom_prefix_車庫: _NonASCIIName[12:18],",
2592+
(string) (len=48) "\tCustom_prefix_Էժան: _NonASCIIName[18:26],",
2593+
(string) (len=1) "}",
2594+
(string) "",
2595+
(string) (len=44) "// String implements the Stringer interface.",
2596+
(string) (len=35) "func (x NonASCII) String() string {",
2597+
(string) (len=36) "\tif str, ok := _NonASCIIMap[x]; ok {",
2598+
(string) (len=12) "\t\treturn str",
2599+
(string) (len=2) "\t}",
2600+
(string) (len=38) "\treturn fmt.Sprintf(\"NonASCII(%d)\", x)",
2601+
(string) (len=1) "}",
2602+
(string) "",
2603+
(string) (len=41) "var _NonASCIIValue = map[string]NonASCII{",
2604+
(string) (len=67) "\t_NonASCIIName[0:12]: Custom_prefix_Продам,",
2605+
(string) (len=67) "\tstrings.ToLower(_NonASCIIName[0:12]): Custom_prefix_Продам,",
2606+
(string) (len=61) "\t_NonASCIIName[12:18]: Custom_prefix_車庫,",
2607+
(string) (len=61) "\tstrings.ToLower(_NonASCIIName[12:18]): Custom_prefix_車庫,",
2608+
(string) (len=63) "\t_NonASCIIName[18:26]: Custom_prefix_Էժան,",
2609+
(string) (len=63) "\tstrings.ToLower(_NonASCIIName[18:26]): Custom_prefix_Էժան,",
2610+
(string) (len=1) "}",
2611+
(string) "",
2612+
(string) (len=60) "// ParseNonASCII attempts to convert a string to a NonASCII.",
2613+
(string) (len=51) "func ParseNonASCII(name string) (NonASCII, error) {",
2614+
(string) (len=39) "\tif x, ok := _NonASCIIValue[name]; ok {",
2615+
(string) (len=15) "\t\treturn x, nil",
2616+
(string) (len=2) "\t}",
2617+
(string) (len=67) "\treturn NonASCII(0), fmt.Errorf(\"%s is not a valid NonASCII\", name)",
2618+
(string) (len=1) "}",
2619+
(string) "",
2620+
(string) (len=35) "func (x NonASCII) Ptr() *NonASCII {",
2621+
(string) (len=10) "\treturn &x",
2622+
(string) (len=1) "}",
2623+
(string) "",
2624+
(string) (len=53) "// MarshalText implements the text marshaller method.",
2625+
(string) (len=49) "func (x NonASCII) MarshalText() ([]byte, error) {",
2626+
(string) (len=31) "\treturn []byte(x.String()), nil",
2627+
(string) (len=1) "}",
2628+
(string) "",
2629+
(string) (len=57) "// UnmarshalText implements the text unmarshaller method.",
2630+
(string) (len=53) "func (x *NonASCII) UnmarshalText(text []byte) error {",
2631+
(string) (len=21) "\tname := string(text)",
2632+
(string) (len=32) "\ttmp, err := ParseNonASCII(name)",
2633+
(string) (len=16) "\tif err != nil {",
2634+
(string) (len=12) "\t\treturn err",
2635+
(string) (len=2) "\t}",
2636+
(string) (len=9) "\t*x = tmp",
2637+
(string) (len=11) "\treturn nil",
2638+
(string) (len=1) "}",
2639+
(string) "",
2640+
(string) (len=95) "var _NonASCIIErrNilPtr = errors.New(\"value pointer is nil\") // one per type for package clashes",
2641+
(string) "",
2642+
(string) (len=41) "// Scan implements the Scanner interface.",
2643+
(string) (len=56) "func (x *NonASCII) Scan(value interface{}) (err error) {",
2644+
(string) (len=18) "\tif value == nil {",
2645+
(string) (len=18) "\t\t*x = NonASCII(0)",
2646+
(string) (len=8) "\t\treturn",
2647+
(string) (len=2) "\t}",
2648+
(string) "",
2649+
(string) (len=37) "\t// A wider range of scannable types.",
2650+
(string) (len=61) "\t// driver.Value values at the top of the list for expediency",
2651+
(string) (len=27) "\tswitch v := value.(type) {",
2652+
(string) (len=12) "\tcase int64:",
2653+
(string) (len=18) "\t\t*x = NonASCII(v)",
2654+
(string) (len=13) "\tcase string:",
2655+
(string) (len=28) "\t\t*x, err = ParseNonASCII(v)",
2656+
(string) (len=17) "\t\tif err != nil {",
2657+
(string) (len=47) "\t\t\t// try parsing the integer value as a string",
2658+
(string) (len=49) "\t\t\tif val, verr := strconv.Atoi(v); verr == nil {",
2659+
(string) (len=32) "\t\t\t\t*x, err = NonASCII(val), nil",
2660+
(string) (len=4) "\t\t\t}",
2661+
(string) (len=3) "\t\t}",
2662+
(string) (len=13) "\tcase []byte:",
2663+
(string) (len=36) "\t\t*x, err = ParseNonASCII(string(v))",
2664+
(string) (len=17) "\t\tif err != nil {",
2665+
(string) (len=47) "\t\t\t// try parsing the integer value as a string",
2666+
(string) (len=57) "\t\t\tif val, verr := strconv.Atoi(string(v)); verr == nil {",
2667+
(string) (len=32) "\t\t\t\t*x, err = NonASCII(val), nil",
2668+
(string) (len=4) "\t\t\t}",
2669+
(string) (len=3) "\t\t}",
2670+
(string) (len=15) "\tcase NonASCII:",
2671+
(string) (len=8) "\t\t*x = v",
2672+
(string) (len=10) "\tcase int:",
2673+
(string) (len=18) "\t\t*x = NonASCII(v)",
2674+
(string) (len=16) "\tcase *NonASCII:",
2675+
(string) (len=15) "\t\tif v == nil {",
2676+
(string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr",
2677+
(string) (len=3) "\t\t}",
2678+
(string) (len=9) "\t\t*x = *v",
2679+
(string) (len=11) "\tcase uint:",
2680+
(string) (len=18) "\t\t*x = NonASCII(v)",
2681+
(string) (len=13) "\tcase uint64:",
2682+
(string) (len=18) "\t\t*x = NonASCII(v)",
2683+
(string) (len=11) "\tcase *int:",
2684+
(string) (len=15) "\t\tif v == nil {",
2685+
(string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr",
2686+
(string) (len=3) "\t\t}",
2687+
(string) (len=19) "\t\t*x = NonASCII(*v)",
2688+
(string) (len=13) "\tcase *int64:",
2689+
(string) (len=15) "\t\tif v == nil {",
2690+
(string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr",
2691+
(string) (len=3) "\t\t}",
2692+
(string) (len=19) "\t\t*x = NonASCII(*v)",
2693+
(string) (len=72) "\tcase float64: // json marshals everything as a float64 if it's a number",
2694+
(string) (len=18) "\t\t*x = NonASCII(v)",
2695+
(string) (len=73) "\tcase *float64: // json marshals everything as a float64 if it's a number",
2696+
(string) (len=15) "\t\tif v == nil {",
2697+
(string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr",
2698+
(string) (len=3) "\t\t}",
2699+
(string) (len=19) "\t\t*x = NonASCII(*v)",
2700+
(string) (len=12) "\tcase *uint:",
2701+
(string) (len=15) "\t\tif v == nil {",
2702+
(string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr",
2703+
(string) (len=3) "\t\t}",
2704+
(string) (len=19) "\t\t*x = NonASCII(*v)",
2705+
(string) (len=14) "\tcase *uint64:",
2706+
(string) (len=15) "\t\tif v == nil {",
2707+
(string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr",
2708+
(string) (len=3) "\t\t}",
2709+
(string) (len=19) "\t\t*x = NonASCII(*v)",
2710+
(string) (len=14) "\tcase *string:",
2711+
(string) (len=15) "\t\tif v == nil {",
2712+
(string) (len=28) "\t\t\treturn _NonASCIIErrNilPtr",
2713+
(string) (len=3) "\t\t}",
2714+
(string) (len=29) "\t\t*x, err = ParseNonASCII(*v)",
2715+
(string) (len=17) "\t\tif err != nil {",
2716+
(string) (len=47) "\t\t\t// try parsing the integer value as a string",
2717+
(string) (len=50) "\t\t\tif val, verr := strconv.Atoi(*v); verr == nil {",
2718+
(string) (len=32) "\t\t\t\t*x, err = NonASCII(val), nil",
2719+
(string) (len=4) "\t\t\t}",
2720+
(string) (len=3) "\t\t}",
2721+
(string) (len=2) "\t}",
2722+
(string) "",
2723+
(string) (len=7) "\treturn",
2724+
(string) (len=1) "}",
2725+
(string) "",
2726+
(string) (len=48) "// Value implements the driver Valuer interface.",
2727+
(string) (len=49) "func (x NonASCII) Value() (driver.Value, error) {",
2728+
(string) (len=23) "\treturn x.String(), nil",
2729+
(string) (len=1) "}",
2730+
(string) "",
2731+
(string) (len=55) "// Set implements the Golang flag.Value interface func.",
2732+
(string) (len=42) "func (x *NonASCII) Set(val string) error {",
2733+
(string) (len=29) "\tv, err := ParseNonASCII(val)",
2734+
(string) (len=7) "\t*x = v",
2735+
(string) (len=11) "\treturn err",
2736+
(string) (len=1) "}",
2737+
(string) "",
2738+
(string) (len=56) "// Get implements the Golang flag.Getter interface func.",
2739+
(string) (len=38) "func (x *NonASCII) Get() interface{} {",
2740+
(string) (len=10) "\treturn *x",
2741+
(string) (len=1) "}",
2742+
(string) "",
2743+
(string) (len=62) "// Type implements the github.com/spf13/pFlag Value interface.",
2744+
(string) (len=34) "func (x *NonASCII) Type() string {",
2745+
(string) (len=18) "\treturn \"NonASCII\"",
2746+
(string) (len=1) "}",
2747+
(string) "",
2748+
(string) (len=26) "type NullNonASCII struct {",
2749+
(string) (len=18) "\tNonASCII NonASCII",
2750+
(string) (len=14) "\tValid bool",
2751+
(string) (len=14) "\tSet bool",
2752+
(string) (len=1) "}",
2753+
(string) "",
2754+
(string) (len=56) "func NewNullNonASCII(val interface{}) (x NullNonASCII) {",
2755+
(string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.",
2756+
(string) (len=7) "\treturn",
2757+
(string) (len=1) "}",
2758+
(string) "",
2759+
(string) (len=41) "// Scan implements the Scanner interface.",
2760+
(string) (len=60) "func (x *NullNonASCII) Scan(value interface{}) (err error) {",
2761+
(string) (len=13) "\tx.Set = true",
2762+
(string) (len=18) "\tif value == nil {",
2763+
(string) (len=42) "\t\tx.NonASCII, x.Valid = NonASCII(0), false",
2764+
(string) (len=8) "\t\treturn",
2765+
(string) (len=2) "\t}",
2766+
(string) "",
2767+
(string) (len=29) "\terr = x.NonASCII.Scan(value)",
2768+
(string) (len=23) "\tx.Valid = (err == nil)",
2769+
(string) (len=7) "\treturn",
2770+
(string) (len=1) "}",
2771+
(string) "",
2772+
(string) (len=48) "// Value implements the driver Valuer interface.",
2773+
(string) (len=53) "func (x NullNonASCII) Value() (driver.Value, error) {",
2774+
(string) (len=14) "\tif !x.Valid {",
2775+
(string) (len=17) "\t\treturn nil, nil",
2776+
(string) (len=2) "\t}",
2777+
(string) (len=46) "\t// driver.Value accepts int64 for int values.",
2778+
(string) (len=30) "\treturn int64(x.NonASCII), nil",
2779+
(string) (len=1) "}",
2780+
(string) "",
2781+
(string) (len=59) "// MarshalJSON correctly serializes a NullNonASCII to JSON.",
2782+
(string) (len=53) "func (n NullNonASCII) MarshalJSON() ([]byte, error) {",
2783+
(string) (len=23) "\tconst nullStr = \"null\"",
2784+
(string) (len=13) "\tif n.Valid {",
2785+
(string) (len=33) "\t\treturn json.Marshal(n.NonASCII)",
2786+
(string) (len=2) "\t}",
2787+
(string) (len=28) "\treturn []byte(nullStr), nil",
2788+
(string) (len=1) "}",
2789+
(string) "",
2790+
(string) (len=65) "// UnmarshalJSON correctly deserializes a NullNonASCII from JSON.",
2791+
(string) (len=54) "func (n *NullNonASCII) UnmarshalJSON(b []byte) error {",
2792+
(string) (len=13) "\tn.Set = true",
2793+
(string) (len=18) "\tvar x interface{}",
2794+
(string) (len=29) "\terr := json.Unmarshal(b, &x)",
2795+
(string) (len=16) "\tif err != nil {",
2796+
(string) (len=12) "\t\treturn err",
2797+
(string) (len=2) "\t}",
2798+
(string) (len=16) "\terr = n.Scan(x)",
2799+
(string) (len=11) "\treturn err",
2800+
(string) (len=1) "}",
2801+
(string) "",
2802+
(string) (len=29) "type NullNonASCIIStr struct {",
2803+
(string) (len=13) "\tNullNonASCII",
2804+
(string) (len=1) "}",
2805+
(string) "",
2806+
(string) (len=62) "func NewNullNonASCIIStr(val interface{}) (x NullNonASCIIStr) {",
2807+
(string) (len=76) "\tx.Scan(val) // yes, we ignore this error, it will just be an invalid value.",
2808+
(string) (len=7) "\treturn",
2809+
(string) (len=1) "}",
2810+
(string) "",
2811+
(string) (len=48) "// Value implements the driver Valuer interface.",
2812+
(string) (len=56) "func (x NullNonASCIIStr) Value() (driver.Value, error) {",
2813+
(string) (len=14) "\tif !x.Valid {",
2814+
(string) (len=17) "\t\treturn nil, nil",
2815+
(string) (len=2) "\t}",
2816+
(string) (len=32) "\treturn x.NonASCII.String(), nil",
2817+
(string) (len=1) "}",
2818+
(string) "",
2819+
(string) (len=59) "// MarshalJSON correctly serializes a NullNonASCII to JSON.",
2820+
(string) (len=56) "func (n NullNonASCIIStr) MarshalJSON() ([]byte, error) {",
2821+
(string) (len=23) "\tconst nullStr = \"null\"",
2822+
(string) (len=13) "\tif n.Valid {",
2823+
(string) (len=33) "\t\treturn json.Marshal(n.NonASCII)",
2824+
(string) (len=2) "\t}",
2825+
(string) (len=28) "\treturn []byte(nullStr), nil",
2826+
(string) (len=1) "}",
2827+
(string) "",
2828+
(string) (len=65) "// UnmarshalJSON correctly deserializes a NullNonASCII from JSON.",
2829+
(string) (len=57) "func (n *NullNonASCIIStr) UnmarshalJSON(b []byte) error {",
2830+
(string) (len=13) "\tn.Set = true",
2831+
(string) (len=18) "\tvar x interface{}",
2832+
(string) (len=29) "\terr := json.Unmarshal(b, &x)",
2833+
(string) (len=16) "\tif err != nil {",
2834+
(string) (len=12) "\t\treturn err",
2835+
(string) (len=2) "\t}",
2836+
(string) (len=16) "\terr = n.Scan(x)",
2837+
(string) (len=11) "\treturn err",
2838+
(string) (len=1) "}",
2839+
(string) "",
2840+
(string) (len=7) "const (",
25792841
(string) (len=65) "\t// Custom_prefix_TestHyphen is a Sanitizing of type Test-Hyphen.",
25802842
(string) (len=43) "\tCustom_prefix_TestHyphen Sanitizing = iota",
25812843
(string) (len=67) "\t// Custom_prefix_HyphenStart is a Sanitizing of type -HyphenStart.",

0 commit comments

Comments
 (0)