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