Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion generator/generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,7 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) {
rawName := value
valueStr := value

isQuoted := false
if strings.Contains(value, `=`) {
// Get the value specified and set the data to that value.
equalIndex := strings.Index(value, `=`)
Expand All @@ -345,6 +346,7 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) {
}
if q := identifyQuoted(dataVal); q != "" {
valueStr = trimQuotes(q, dataVal)
isQuoted = true
}
} else if unsigned {
newData, err := strconv.ParseUint(dataVal, 0, 64)
Expand All @@ -368,8 +370,11 @@ func (g *Generator) parseEnum(ts *ast.TypeSpec) (*Enum, error) {
fmt.Printf("Ignoring enum with '=' but no value after: %s\n", rawName)
}
}

rawName = strings.TrimSpace(rawName)
valueStr = strings.TrimSpace(valueStr)
if !isQuoted {
valueStr = strings.TrimSpace(valueStr)
}
name := cases.Title(language.Und, cases.NoLower).String(rawName)
prefixedName := name
if name != skipHolder {
Expand Down
30 changes: 30 additions & 0 deletions generator/generator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -989,3 +989,33 @@ type Greek string
assert.Contains(t, outputStr, "var ErrInvalidGreek")
assert.Contains(t, outputStr, "lookupSqlIntGreek")
}

func TestStringDoubleQuotedWithWhitespaceOnly(t *testing.T) {
input := `package test
// ENUM(Empty=" ")
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), "CharEmpty Char = \" \"")
}

func TestStringSingleQuotedWithWhitespaceOnly(t *testing.T) {
input := `package test
// ENUM(Empty=' ')
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), "CharEmpty Char = \" \"")
}