39 lines
1.0 KiB
Go
39 lines
1.0 KiB
Go
package encode // import "udico.de/uditaren/opier/encode"
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"strings"
|
|
"udico.de/opier/openapi"
|
|
)
|
|
|
|
func (e Encoder) Object(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 struct {\n", name))
|
|
|
|
for k, v := range schema.Properties {
|
|
tName := NormalizeName(k)
|
|
if v.Description != "" {
|
|
tDesc := strings.Split(strings.TrimSpace(v.Description), "\n")
|
|
tBuf.WriteString(fmt.Sprintf("\n")) // just a newline before commented fields
|
|
for _, tLine := range tDesc {
|
|
tBuf.WriteString(fmt.Sprintf(" // %v\n", tLine))
|
|
}
|
|
}
|
|
tBuf.WriteString(fmt.Sprintf(" %v %v `json:\"%v\"`\n", tName, v.GoType(), k))
|
|
}
|
|
|
|
tBuf.WriteString(fmt.Sprintf("}\n"))
|
|
|
|
return tBuf.String()
|
|
}
|