41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
package encode // import "udico.de/uditaren/opier/encode"
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"strings"
|
|
"udico.de/opier/openapi"
|
|
)
|
|
|
|
func (e Encoder) Enum(name string, schema openapi.Schema) string {
|
|
tBuf := bytes.Buffer{}
|
|
tBuf.WriteString(fmt.Sprintf("package %v\n\n", e.Package))
|
|
tBuf.WriteString(e.GeneratedHeader())
|
|
|
|
if schema.Description != "" {
|
|
tDesc := strings.Split(strings.TrimSpace(schema.Description), "\n")
|
|
for _, tLine := range tDesc {
|
|
tBuf.WriteString(fmt.Sprintf("// %v\n", tLine))
|
|
}
|
|
}
|
|
tBuf.WriteString(fmt.Sprintf("type %v %v\n\n", name, schema.Type))
|
|
tBuf.WriteString(fmt.Sprintf("const (\n"))
|
|
|
|
firstRow := true
|
|
tNames, tLen := schema.EnumNames()
|
|
tLenName := len(name)
|
|
for k, v := range schema.Enum {
|
|
value := v
|
|
if schema.Type == "string" {
|
|
value = fmt.Sprintf("\"%v\"", v)
|
|
}
|
|
if firstRow {
|
|
tBuf.WriteString(fmt.Sprintf(" %[2]v_%-[4]*[1]v %v = %v\n", tNames[k], name, value, tLen))
|
|
firstRow = false
|
|
} else {
|
|
tBuf.WriteString(fmt.Sprintf(" %[2]v_%-[4]*[1]v %[5]*[6]v = %[3]v\n", tNames[k], name, value, tLen, tLenName, ""))
|
|
}
|
|
}
|
|
tBuf.WriteString(fmt.Sprintf(")\n"))
|
|
return tBuf.String()
|
|
}
|