Skip to content

Commit b25a89e

Browse files
committed
feat: Move lower-cased names to a separate map to improve case support
Fixes dmarkham#40
1 parent bcbe617 commit b25a89e

18 files changed

+246
-172
lines changed

Diff for: enumer.go

+24-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ func %[1]sString(s string) (%[1]s, error) {
1111
return val, nil
1212
}
1313
14-
if val, ok := _%[1]sNameToValueMap[strings.ToLower(s)]; ok {
14+
if val, ok := _%[1]sLowerNameToValueMap[strings.ToLower(s)]; ok {
1515
return val, nil
1616
}
1717
return 0, fmt.Errorf("%%s does not belong to %[1]s values", s)
@@ -84,6 +84,7 @@ func (g *Generator) buildBasicExtras(runs [][]Value, typeName string, runsThresh
8484

8585
// Print the map between name and value
8686
g.printValueMap(runs, typeName, runsThreshold)
87+
g.printLowerValueMap(runs, typeName, runsThreshold)
8788

8889
// Print the slice of names
8990
g.printNamesSlice(runs, typeName, runsThreshold)
@@ -115,12 +116,34 @@ func (g *Generator) printValueMap(runs [][]Value, typeName string, runsThreshold
115116

116117
for _, value := range values {
117118
g.Printf("\t_%sName%s[%d:%d]: %s,\n", typeName, runID, n, n+len(value.name), value.originalName)
119+
n += len(value.name)
120+
}
121+
}
122+
g.Printf("}\n\n")
123+
}
124+
125+
func (g *Generator) printLowerValueMap(runs [][]Value, typeName string, runsThreshold int) {
126+
thereAreRuns := len(runs) > 1 && len(runs) <= runsThreshold
127+
g.Printf("\nvar _%sLowerNameToValueMap = map[string]%s{\n", typeName, typeName)
128+
129+
var n int
130+
var runID string
131+
for i, values := range runs {
132+
if thereAreRuns {
133+
runID = "_" + fmt.Sprintf("%d", i)
134+
n = 0
135+
} else {
136+
runID = ""
137+
}
138+
139+
for _, value := range values {
118140
g.Printf("\t_%sLowerName%s[%d:%d]: %s,\n", typeName, runID, n, n+len(value.name), value.originalName)
119141
n += len(value.name)
120142
}
121143
}
122144
g.Printf("}\n\n")
123145
}
146+
124147
func (g *Generator) printNamesSlice(runs [][]Value, typeName string, runsThreshold int) {
125148
thereAreRuns := len(runs) > 1 && len(runs) <= runsThreshold
126149
g.Printf("\nvar _%sNames = []string{\n", typeName)

Diff for: testdata/day.golden

+11-8
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,22 @@ func _DayNoOp() {
3232
var _DayValues = []Day{Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}
3333

3434
var _DayNameToValueMap = map[string]Day{
35-
_DayName[0:6]: Monday,
35+
_DayName[0:6]: Monday,
36+
_DayName[6:13]: Tuesday,
37+
_DayName[13:22]: Wednesday,
38+
_DayName[22:30]: Thursday,
39+
_DayName[30:36]: Friday,
40+
_DayName[36:44]: Saturday,
41+
_DayName[44:50]: Sunday,
42+
}
43+
44+
var _DayLowerNameToValueMap = map[string]Day{
3645
_DayLowerName[0:6]: Monday,
37-
_DayName[6:13]: Tuesday,
3846
_DayLowerName[6:13]: Tuesday,
39-
_DayName[13:22]: Wednesday,
4047
_DayLowerName[13:22]: Wednesday,
41-
_DayName[22:30]: Thursday,
4248
_DayLowerName[22:30]: Thursday,
43-
_DayName[30:36]: Friday,
4449
_DayLowerName[30:36]: Friday,
45-
_DayName[36:44]: Saturday,
4650
_DayLowerName[36:44]: Saturday,
47-
_DayName[44:50]: Sunday,
4851
_DayLowerName[44:50]: Sunday,
4952
}
5053

@@ -65,7 +68,7 @@ func DayString(s string) (Day, error) {
6568
return val, nil
6669
}
6770

68-
if val, ok := _DayNameToValueMap[strings.ToLower(s)]; ok {
71+
if val, ok := _DayLowerNameToValueMap[strings.ToLower(s)]; ok {
6972
return val, nil
7073
}
7174
return 0, fmt.Errorf("%s does not belong to Day values", s)

Diff for: testdata/dayTrimAndPrefix.golden

+11-8
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,22 @@ func _DayNoOp() {
2828
var _DayValues = []Day{DayMonday, DayTuesday, DayWednesday, DayThursday, DayFriday, DaySaturday, DaySunday}
2929

3030
var _DayNameToValueMap = map[string]Day{
31-
_DayName[0:11]: DayMonday,
31+
_DayName[0:11]: DayMonday,
32+
_DayName[11:23]: DayTuesday,
33+
_DayName[23:37]: DayWednesday,
34+
_DayName[37:50]: DayThursday,
35+
_DayName[50:61]: DayFriday,
36+
_DayName[61:74]: DaySaturday,
37+
_DayName[74:85]: DaySunday,
38+
}
39+
40+
var _DayLowerNameToValueMap = map[string]Day{
3241
_DayLowerName[0:11]: DayMonday,
33-
_DayName[11:23]: DayTuesday,
3442
_DayLowerName[11:23]: DayTuesday,
35-
_DayName[23:37]: DayWednesday,
3643
_DayLowerName[23:37]: DayWednesday,
37-
_DayName[37:50]: DayThursday,
3844
_DayLowerName[37:50]: DayThursday,
39-
_DayName[50:61]: DayFriday,
4045
_DayLowerName[50:61]: DayFriday,
41-
_DayName[61:74]: DaySaturday,
4246
_DayLowerName[61:74]: DaySaturday,
43-
_DayName[74:85]: DaySunday,
4447
_DayLowerName[74:85]: DaySunday,
4548
}
4649

@@ -61,7 +64,7 @@ func DayString(s string) (Day, error) {
6164
return val, nil
6265
}
6366

64-
if val, ok := _DayNameToValueMap[strings.ToLower(s)]; ok {
67+
if val, ok := _DayLowerNameToValueMap[strings.ToLower(s)]; ok {
6568
return val, nil
6669
}
6770
return 0, fmt.Errorf("%s does not belong to Day values", s)

Diff for: testdata/dayWithLinecomment.golden

+11-8
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,22 @@ func _DayNoOp() {
2828
var _DayValues = []Day{Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}
2929

3030
var _DayNameToValueMap = map[string]Day{
31-
_DayName[0:5]: Monday,
31+
_DayName[0:5]: Monday,
32+
_DayName[5:12]: Tuesday,
33+
_DayName[12:21]: Wednesday,
34+
_DayName[21:29]: Thursday,
35+
_DayName[29:36]: Friday,
36+
_DayName[36:44]: Saturday,
37+
_DayName[44:50]: Sunday,
38+
}
39+
40+
var _DayLowerNameToValueMap = map[string]Day{
3241
_DayLowerName[0:5]: Monday,
33-
_DayName[5:12]: Tuesday,
3442
_DayLowerName[5:12]: Tuesday,
35-
_DayName[12:21]: Wednesday,
3643
_DayLowerName[12:21]: Wednesday,
37-
_DayName[21:29]: Thursday,
3844
_DayLowerName[21:29]: Thursday,
39-
_DayName[29:36]: Friday,
4045
_DayLowerName[29:36]: Friday,
41-
_DayName[36:44]: Saturday,
4246
_DayLowerName[36:44]: Saturday,
43-
_DayName[44:50]: Sunday,
4447
_DayLowerName[44:50]: Sunday,
4548
}
4649

@@ -61,7 +64,7 @@ func DayString(s string) (Day, error) {
6164
return val, nil
6265
}
6366

64-
if val, ok := _DayNameToValueMap[strings.ToLower(s)]; ok {
67+
if val, ok := _DayLowerNameToValueMap[strings.ToLower(s)]; ok {
6568
return val, nil
6669
}
6770
return 0, fmt.Errorf("%s does not belong to Day values", s)

Diff for: testdata/dayWithPrefix.golden

+11-8
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,22 @@ func _DayNoOp() {
2828
var _DayValues = []Day{Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}
2929

3030
var _DayNameToValueMap = map[string]Day{
31-
_DayName[0:9]: Monday,
31+
_DayName[0:9]: Monday,
32+
_DayName[9:19]: Tuesday,
33+
_DayName[19:31]: Wednesday,
34+
_DayName[31:42]: Thursday,
35+
_DayName[42:51]: Friday,
36+
_DayName[51:62]: Saturday,
37+
_DayName[62:71]: Sunday,
38+
}
39+
40+
var _DayLowerNameToValueMap = map[string]Day{
3241
_DayLowerName[0:9]: Monday,
33-
_DayName[9:19]: Tuesday,
3442
_DayLowerName[9:19]: Tuesday,
35-
_DayName[19:31]: Wednesday,
3643
_DayLowerName[19:31]: Wednesday,
37-
_DayName[31:42]: Thursday,
3844
_DayLowerName[31:42]: Thursday,
39-
_DayName[42:51]: Friday,
4045
_DayLowerName[42:51]: Friday,
41-
_DayName[51:62]: Saturday,
4246
_DayLowerName[51:62]: Saturday,
43-
_DayName[62:71]: Sunday,
4447
_DayLowerName[62:71]: Sunday,
4548
}
4649

@@ -61,7 +64,7 @@ func DayString(s string) (Day, error) {
6164
return val, nil
6265
}
6366

64-
if val, ok := _DayNameToValueMap[strings.ToLower(s)]; ok {
67+
if val, ok := _DayLowerNameToValueMap[strings.ToLower(s)]; ok {
6568
return val, nil
6669
}
6770
return 0, fmt.Errorf("%s does not belong to Day values", s)

Diff for: testdata/gap.golden

+12-9
Original file line numberDiff line numberDiff line change
@@ -50,21 +50,24 @@ func _GapNoOp() {
5050
var _GapValues = []Gap{Two, Three, Five, Six, Seven, Eight, Nine, Eleven}
5151

5252
var _GapNameToValueMap = map[string]Gap{
53-
_GapName_0[0:3]: Two,
53+
_GapName_0[0:3]: Two,
54+
_GapName_0[3:8]: Three,
55+
_GapName_1[0:4]: Five,
56+
_GapName_1[4:7]: Six,
57+
_GapName_1[7:12]: Seven,
58+
_GapName_1[12:17]: Eight,
59+
_GapName_1[17:21]: Nine,
60+
_GapName_2[0:6]: Eleven,
61+
}
62+
63+
var _GapLowerNameToValueMap = map[string]Gap{
5464
_GapLowerName_0[0:3]: Two,
55-
_GapName_0[3:8]: Three,
5665
_GapLowerName_0[3:8]: Three,
57-
_GapName_1[0:4]: Five,
5866
_GapLowerName_1[0:4]: Five,
59-
_GapName_1[4:7]: Six,
6067
_GapLowerName_1[4:7]: Six,
61-
_GapName_1[7:12]: Seven,
6268
_GapLowerName_1[7:12]: Seven,
63-
_GapName_1[12:17]: Eight,
6469
_GapLowerName_1[12:17]: Eight,
65-
_GapName_1[17:21]: Nine,
6670
_GapLowerName_1[17:21]: Nine,
67-
_GapName_2[0:6]: Eleven,
6871
_GapLowerName_2[0:6]: Eleven,
6972
}
7073

@@ -86,7 +89,7 @@ func GapString(s string) (Gap, error) {
8689
return val, nil
8790
}
8891

89-
if val, ok := _GapNameToValueMap[strings.ToLower(s)]; ok {
92+
if val, ok := _GapLowerNameToValueMap[strings.ToLower(s)]; ok {
9093
return val, nil
9194
}
9295
return 0, fmt.Errorf("%s does not belong to Gap values", s)

Diff for: testdata/num.golden

+9-6
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,18 @@ func _NumNoOp() {
3131
var _NumValues = []Num{m_2, m_1, m0, m1, m2}
3232

3333
var _NumNameToValueMap = map[string]Num{
34-
_NumName[0:3]: m_2,
34+
_NumName[0:3]: m_2,
35+
_NumName[3:6]: m_1,
36+
_NumName[6:8]: m0,
37+
_NumName[8:10]: m1,
38+
_NumName[10:12]: m2,
39+
}
40+
41+
var _NumLowerNameToValueMap = map[string]Num{
3542
_NumLowerName[0:3]: m_2,
36-
_NumName[3:6]: m_1,
3743
_NumLowerName[3:6]: m_1,
38-
_NumName[6:8]: m0,
3944
_NumLowerName[6:8]: m0,
40-
_NumName[8:10]: m1,
4145
_NumLowerName[8:10]: m1,
42-
_NumName[10:12]: m2,
4346
_NumLowerName[10:12]: m2,
4447
}
4548

@@ -58,7 +61,7 @@ func NumString(s string) (Num, error) {
5861
return val, nil
5962
}
6063

61-
if val, ok := _NumNameToValueMap[strings.ToLower(s)]; ok {
64+
if val, ok := _NumLowerNameToValueMap[strings.ToLower(s)]; ok {
6265
return val, nil
6366
}
6467
return 0, fmt.Errorf("%s does not belong to Num values", s)

Diff for: testdata/offset.golden

+7-4
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,14 @@ func _NumberNoOp() {
2929
var _NumberValues = []Number{One, Two, Three}
3030

3131
var _NumberNameToValueMap = map[string]Number{
32-
_NumberName[0:3]: One,
32+
_NumberName[0:3]: One,
33+
_NumberName[3:6]: Two,
34+
_NumberName[6:11]: Three,
35+
}
36+
37+
var _NumberLowerNameToValueMap = map[string]Number{
3338
_NumberLowerName[0:3]: One,
34-
_NumberName[3:6]: Two,
3539
_NumberLowerName[3:6]: Two,
36-
_NumberName[6:11]: Three,
3740
_NumberLowerName[6:11]: Three,
3841
}
3942

@@ -50,7 +53,7 @@ func NumberString(s string) (Number, error) {
5053
return val, nil
5154
}
5255

53-
if val, ok := _NumberNameToValueMap[strings.ToLower(s)]; ok {
56+
if val, ok := _NumberLowerNameToValueMap[strings.ToLower(s)]; ok {
5457
return val, nil
5558
}
5659
return 0, fmt.Errorf("%s does not belong to Number values", s)

Diff for: testdata/prime.golden

+17-14
Original file line numberDiff line numberDiff line change
@@ -51,31 +51,34 @@ func _PrimeNoOp() {
5151
var _PrimeValues = []Prime{p2, p3, p5, p7, p11, p13, p17, p19, p23, p29, p37, p41, p43}
5252

5353
var _PrimeNameToValueMap = map[string]Prime{
54-
_PrimeName[0:2]: p2,
54+
_PrimeName[0:2]: p2,
55+
_PrimeName[2:4]: p3,
56+
_PrimeName[4:6]: p5,
57+
_PrimeName[6:8]: p7,
58+
_PrimeName[8:11]: p11,
59+
_PrimeName[11:14]: p13,
60+
_PrimeName[14:17]: p17,
61+
_PrimeName[17:20]: p19,
62+
_PrimeName[20:23]: p23,
63+
_PrimeName[23:26]: p29,
64+
_PrimeName[26:29]: p37,
65+
_PrimeName[29:32]: p41,
66+
_PrimeName[32:35]: p43,
67+
}
68+
69+
var _PrimeLowerNameToValueMap = map[string]Prime{
5570
_PrimeLowerName[0:2]: p2,
56-
_PrimeName[2:4]: p3,
5771
_PrimeLowerName[2:4]: p3,
58-
_PrimeName[4:6]: p5,
5972
_PrimeLowerName[4:6]: p5,
60-
_PrimeName[6:8]: p7,
6173
_PrimeLowerName[6:8]: p7,
62-
_PrimeName[8:11]: p11,
6374
_PrimeLowerName[8:11]: p11,
64-
_PrimeName[11:14]: p13,
6575
_PrimeLowerName[11:14]: p13,
66-
_PrimeName[14:17]: p17,
6776
_PrimeLowerName[14:17]: p17,
68-
_PrimeName[17:20]: p19,
6977
_PrimeLowerName[17:20]: p19,
70-
_PrimeName[20:23]: p23,
7178
_PrimeLowerName[20:23]: p23,
72-
_PrimeName[23:26]: p29,
7379
_PrimeLowerName[23:26]: p29,
74-
_PrimeName[26:29]: p37,
7580
_PrimeLowerName[26:29]: p37,
76-
_PrimeName[29:32]: p41,
7781
_PrimeLowerName[29:32]: p41,
78-
_PrimeName[32:35]: p43,
7982
_PrimeLowerName[32:35]: p43,
8083
}
8184

@@ -102,7 +105,7 @@ func PrimeString(s string) (Prime, error) {
102105
return val, nil
103106
}
104107

105-
if val, ok := _PrimeNameToValueMap[strings.ToLower(s)]; ok {
108+
if val, ok := _PrimeLowerNameToValueMap[strings.ToLower(s)]; ok {
106109
return val, nil
107110
}
108111
return 0, fmt.Errorf("%s does not belong to Prime values", s)

0 commit comments

Comments
 (0)