github.com/wabain/gqlgen@v0.7.2/graphql/bool.go (about)

     1  package graphql
     2  
     3  import (
     4  	"fmt"
     5  	"io"
     6  	"strings"
     7  )
     8  
     9  func MarshalBoolean(b bool) Marshaler {
    10  	return WriterFunc(func(w io.Writer) {
    11  		if b {
    12  			w.Write(trueLit)
    13  		} else {
    14  			w.Write(falseLit)
    15  		}
    16  	})
    17  }
    18  
    19  func UnmarshalBoolean(v interface{}) (bool, error) {
    20  	switch v := v.(type) {
    21  	case string:
    22  		return "true" == strings.ToLower(v), nil
    23  	case int:
    24  		return v != 0, nil
    25  	case bool:
    26  		return v, nil
    27  	default:
    28  		return false, fmt.Errorf("%T is not a bool", v)
    29  	}
    30  }