/
enum.go
41 lines (35 loc) · 809 Bytes
/
enum.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package parse
import (
"github.com/Vliro/humus/gen/graphql-go/schema"
"io"
)
//EnumCreator is the creator for the enum file.
type EnumCreator struct{}
func (e EnumCreator) Create(i *Generator, w io.Writer) {
e.makeEnums(i.enums(), i.outputs[EnumFileName])
}
type EnumValues struct {
Name string
Start string
Fields []string
}
type EnumResult struct {
Vals []EnumValues
}
func (e EnumCreator) makeEnums(enums []*schema.Enum, output io.Writer) {
var res EnumResult
templ := getTemplate("Enum")
for _, v := range enums {
var data EnumValues
for _, name := range v.Values {
if data.Start == "" {
data.Start = name.Name
continue
}
data.Fields = append(data.Fields, name.Name)
}
data.Name = v.Name
res.Vals = append(res.Vals, data)
}
_ = templ.Execute(output, res)
}