github.com/vcilabs/webrpc@v0.5.2-0.20201116131534-162e27b1b33b/gen/golang/templates/types.go.tmpl (about) 1 {{define "types"}} 2 3 {{if .Messages}} 4 // 5 // Types 6 // 7 8 {{range .Messages}} 9 {{if .Type | isAdvancedType}} 10 type {{.Name}} {{.EnumType}} 11 {{end}} 12 {{if .Type | isEnum}} 13 {{$enumName := .Name}} 14 {{$enumType := .EnumType}} 15 type {{$enumName}} {{$enumType}} 16 17 const ( 18 {{- range .Fields}} 19 {{$enumName}}_{{.Name}} {{$enumName}} = {{.Value}} 20 {{- end}} 21 ) 22 23 var {{$enumName}}_name = map[{{$enumType}}]string { 24 {{- range .Fields}} 25 {{.Value}}: "{{.Name}}", 26 {{- end}} 27 } 28 29 var {{$enumName}}_value = map[string]{{$enumType}} { 30 {{- range .Fields}} 31 "{{.Name}}": {{.Value}}, 32 {{- end}} 33 } 34 35 func (x {{$enumName}}) String() string { 36 return {{$enumName}}_name[{{$enumType}}(x)] 37 } 38 39 func (x {{$enumName}}) MarshalJSON() ([]byte, error) { 40 buf := bytes.NewBufferString(`"`) 41 buf.WriteString({{$enumName}}_name[{{$enumType}}(x)]) 42 buf.WriteString(`"`) 43 return buf.Bytes(), nil 44 } 45 46 func (x *{{$enumName}}) UnmarshalJSON(b []byte) error { 47 var j string 48 err := json.Unmarshal(b, &j) 49 if err != nil { 50 return err 51 } 52 *x = {{$enumName}}({{$enumName}}_value[j]) 53 return nil 54 } 55 {{end}} 56 {{if .Type | isStruct }} 57 type {{.Name}} struct { 58 {{- range .Fields}} 59 {{. | exportedField}} {{. | fieldOptional}}{{. | fieldTypeDef}} {{. | fieldTags}} 60 {{- end}} 61 } 62 {{end}} 63 {{end}} 64 {{end}} 65 {{if .Services}} 66 {{range .Services}} 67 type {{.Name}} interface { 68 {{- range .Methods}} 69 {{.Name}}({{.Inputs | methodInputs}}) ({{.Outputs | methodOutputs}}) 70 {{- end}} 71 } 72 {{end}} 73 var WebRPCServices = map[string][]string{ 74 {{- range .Services}} 75 "{{.Name}}": { 76 {{- range .Methods}} 77 "{{.Name}}", 78 {{- end}} 79 }, 80 {{- end}} 81 } 82 {{end}} 83 84 {{end}}