From 611eecc204e6bc5f3084d4f755820d5c65a1f1ca Mon Sep 17 00:00:00 2001 From: Muxian Wu Date: Thu, 15 Mar 2018 18:05:37 +0800 Subject: [PATCH] Made the example value for enum type sensitive. --- generate/swaggergen/g_docs.go | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/generate/swaggergen/g_docs.go b/generate/swaggergen/g_docs.go index 3750d19..2cb8fd5 100644 --- a/generate/swaggergen/g_docs.go +++ b/generate/swaggergen/g_docs.go @@ -947,7 +947,7 @@ func parseIdent(st *ast.Ident, k string, m *swagger.Schema, astPkgs []*ast.Packa m.Format = typeFormat[1] } enums := make(map[int]string) - enumValues := make(map[int]string) + enumValues := make(map[int]interface{}) for _, pkg := range astPkgs { for _, fl := range pkg.Files { for _, obj := range fl.Scope.Objects { @@ -975,7 +975,25 @@ func parseIdent(st *ast.Ident, k string, m *swagger.Schema, astPkgs []*ast.Packa continue } enums[int(val.Pos())] = fmt.Sprintf("%s = %s", vs.Names[i].Name, v.Value) - enumValues[int(val.Pos())] = v.Value + switch v.Kind { + case token.INT: + vv, err := strconv.Atoi(v.Value) + if err != nil { + beeLogger.Log.Warnf("Unknown type with BasicLit to int: %v\n", v.Value) + continue + } + enumValues[int(val.Pos())] = vv + case token.FLOAT: + vv, err := strconv.ParseFloat(v.Value, 64) + if err != nil { + beeLogger.Log.Warnf("Unknown type with BasicLit to int: %v\n", v.Value) + continue + } + enumValues[int(val.Pos())] = vv + default: + enumValues[int(val.Pos())] = strings.Trim(v.Value, `"`) + } + } } }