github.com/frostornge/solgen@v0.1.3/proto/service.go (about) 1 package proto 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 type method struct { 9 Name string 10 Input string 11 Output string 12 } 13 14 func (mtd method) printMethod(prefix string) string { 15 return prefix + fmt.Sprintf("rpc %s(%s) returns (%s);", mtd.Name, mtd.Input, mtd.Output) + "\n" 16 } 17 18 type Service struct { 19 Comment string 20 Name string 21 Methods []method 22 } 23 24 func (srv Service) PrintService() string { 25 return srv.printService("") 26 } 27 28 func (srv Service) printService(prefix string) string { 29 var builder strings.Builder 30 31 builder.WriteString(prefix + fmt.Sprintf("// %s", srv.Comment) + "\n") 32 builder.WriteString(prefix + fmt.Sprintf("service %s {", srv.Name) + "\n") 33 34 for _, mtd := range srv.Methods { 35 builder.WriteString(mtd.printMethod(prefix + "\t")) 36 } 37 38 builder.WriteString(prefix + "}" + "\n") 39 40 return builder.String() 41 }