Skip to content

Commit

Permalink
Merge pull request #3 from jmshin92/feature/enum
Browse files Browse the repository at this point in the history
add enum type
  • Loading branch information
jmshin92 authored Apr 26, 2019
2 parents bff6a17 + 49d1933 commit dc7369d
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 21 deletions.
30 changes: 18 additions & 12 deletions generate/swaggergen/g_docs.go
Original file line number Diff line number Diff line change
Expand Up @@ -785,22 +785,28 @@ func parserComments(fl *ast.File, f *ast.FuncDecl, controllerName, pkgpath strin
}
setParamType(&para, typ, fl, pkgpath, controllerName)
}
var paramDesc string
switch len(p) {
case 5:
para.Required, _ = strconv.ParseBool(p[3])
paramDesc = strings.Trim(p[4], `" `)
case 6:
para.Default = str2RealType(p[3], para.Type)
para.Required, _ = strconv.ParseBool(p[4])
paramDesc = strings.Trim(p[5], `" `)
default:
paramDesc = strings.Trim(p[3], `" `)
}
para.Required, _ = strconv.ParseBool(p[3])
para.AllowEmptyValue = !para.Required
paramDesc := strings.Trim(p[4], `" `)
lines := strings.Split(paramDesc, `\n`)
for _, line := range lines {
para.Description = fmt.Sprintf("%s\n%s", para.Description, line)
}

if len(p) >= 6 {
para.Default = str2RealType(p[5], para.Type)
}

if len(p) >= 7 {
values := strings.Split(p[6], ":")
if len(values) > 0 {
para.Enum = make([]interface{}, 0, len(values))
}
for _, value := range values {
para.Enum = append(para.Enum, value)
}
}

opts.Parameters = append(opts.Parameters, para)
} else if strings.HasPrefix(t, "@Failure") {
rs := swagger.Response{}
Expand Down
20 changes: 11 additions & 9 deletions generate/swaggergen/swagger/swagger.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,17 @@ type Operation struct {

// Parameter Describes a single operation parameter.
type Parameter struct {
In string `json:"in,omitempty" yaml:"in,omitempty"`
Name string `json:"name,omitempty" yaml:"name,omitempty"`
Description string `json:"description,omitempty" yaml:"description,omitempty"`
Required bool `json:"required,omitempty" yaml:"required,omitempty"`
Schema *Schema `json:"schema,omitempty" yaml:"schema,omitempty"`
Type string `json:"type,omitempty" yaml:"type,omitempty"`
Format string `json:"format,omitempty" yaml:"format,omitempty"`
Items *ParameterItems `json:"items,omitempty" yaml:"items,omitempty"`
Default interface{} `json:"default,omitempty" yaml:"default,omitempty"`
In string `json:"in,omitempty" yaml:"in,omitempty"`
Name string `json:"name,omitempty" yaml:"name,omitempty"`
Description string `json:"description,omitempty" yaml:"description,omitempty"`
Required bool `json:"required,omitempty" yaml:"required,omitempty"`
Schema *Schema `json:"schema,omitempty" yaml:"schema,omitempty"`
Type string `json:"type,omitempty" yaml:"type,omitempty"`
Format string `json:"format,omitempty" yaml:"format,omitempty"`
Items *ParameterItems `json:"items,omitempty" yaml:"items,omitempty"`
AllowEmptyValue bool `json:"allowEmptyValue,omitempty" yaml:"allowEmptyValue,omitempty"`
Default interface{} `json:"default,omitempty" yaml:"default,omitempty"`
Enum []interface{} `json:"enum,omitempty" yaml:"enum,omitempty"`
}

// ParameterItems A limited subset of JSON-Schema's items object. It is used by parameter definitions that are not located in "body".
Expand Down

0 comments on commit dc7369d

Please sign in to comment.