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  }