github.com/HaswinVidanage/gqlgen@v0.8.1-0.20220609041233-69528c1bf712/graphql/jsonw.go (about) 1 package graphql 2 3 import ( 4 "io" 5 ) 6 7 var nullLit = []byte(`null`) 8 var trueLit = []byte(`true`) 9 var falseLit = []byte(`false`) 10 var openBrace = []byte(`{`) 11 var closeBrace = []byte(`}`) 12 var openBracket = []byte(`[`) 13 var closeBracket = []byte(`]`) 14 var colon = []byte(`:`) 15 var comma = []byte(`,`) 16 17 var Null = &lit{nullLit} 18 var True = &lit{trueLit} 19 var False = &lit{falseLit} 20 21 type Marshaler interface { 22 MarshalGQL(w io.Writer) 23 } 24 25 type Unmarshaler interface { 26 UnmarshalGQL(v interface{}) error 27 } 28 29 type WriterFunc func(writer io.Writer) 30 31 func (f WriterFunc) MarshalGQL(w io.Writer) { 32 f(w) 33 } 34 35 type Array []Marshaler 36 37 func (a Array) MarshalGQL(writer io.Writer) { 38 writer.Write(openBracket) 39 for i, val := range a { 40 if i != 0 { 41 writer.Write(comma) 42 } 43 val.MarshalGQL(writer) 44 } 45 writer.Write(closeBracket) 46 } 47 48 type lit struct{ b []byte } 49 50 func (l lit) MarshalGQL(w io.Writer) { 51 w.Write(l.b) 52 }