diff --git a/generator/generator.go b/generator/generator.go index cac315a..f35276a 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -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, `=`) @@ -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) @@ -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 { diff --git a/generator/generator_test.go b/generator/generator_test.go index 23f2264..ba91b37 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -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 = \" \"") +}