1package generator 2 3import ( 4 "strings" 5) 6 7// Returns is a slice of Return. 8type Returns []Return 9 10// Return is the result of a method's invocation. 11type Return struct { 12 Name string 13 Type string 14} 15 16// HasLength is true if there are returns, else false. 17func (r Returns) HasLength() bool { 18 return len(r) > 0 19} 20 21func (r Returns) WithPrefix(p string) string { 22 if len(r) == 0 { 23 return "" 24 } 25 26 rets := []string{} 27 for i := range r { 28 if p == "" { 29 rets = append(rets, unexport(r[i].Name)) 30 } else { 31 rets = append(rets, p+unexport(r[i].Name)) 32 } 33 } 34 return strings.Join(rets, ", ") 35} 36 37func (r Returns) AsArgs() string { 38 if len(r) == 0 { 39 return "" 40 } 41 42 rets := []string{} 43 for i := range r { 44 rets = append(rets, r[i].Type) 45 } 46 return strings.Join(rets, ", ") 47} 48 49func (r Returns) AsNamedArgsWithTypes() string { 50 if len(r) == 0 { 51 return "" 52 } 53 54 rets := []string{} 55 for i := range r { 56 rets = append(rets, unexport(r[i].Name)+" "+r[i].Type) 57 } 58 return strings.Join(rets, ", ") 59} 60 61func (r Returns) AsNamedArgs() string { 62 if len(r) == 0 { 63 return "" 64 } 65 66 rets := []string{} 67 for i := range r { 68 rets = append(rets, unexport(r[i].Name)) 69 } 70 return strings.Join(rets, ", ") 71} 72 73func (r Returns) AsReturnSignature() string { 74 if len(r) == 0 { 75 return "" 76 } 77 if len(r) == 1 { 78 return r[0].Type 79 } 80 result := "(" 81 for i := range r { 82 result = result + r[i].Type 83 if i < len(r) { 84 result = result + ", " 85 } 86 } 87 result = result + ")" 88 return result 89} 90