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() }