opier/encode/object.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()
}