vendor tsgo
This commit is contained in:
71
tools/tsgo/internal/core/tristate.go
Normal file
71
tools/tsgo/internal/core/tristate.go
Normal file
@@ -0,0 +1,71 @@
|
||||
package core
|
||||
|
||||
//go:generate go tool golang.org/x/tools/cmd/stringer -type=Tristate -output=tristate_stringer_generated.go
|
||||
//go:generate npx dprint fmt tristate_stringer_generated.go
|
||||
|
||||
// Tristate
|
||||
|
||||
type Tristate byte
|
||||
|
||||
const (
|
||||
TSUnknown Tristate = iota
|
||||
TSFalse
|
||||
TSTrue
|
||||
)
|
||||
|
||||
func (t Tristate) IsTrue() bool {
|
||||
return t == TSTrue
|
||||
}
|
||||
|
||||
func (t Tristate) IsTrueOrUnknown() bool {
|
||||
return t == TSTrue || t == TSUnknown
|
||||
}
|
||||
|
||||
func (t Tristate) IsFalse() bool {
|
||||
return t == TSFalse
|
||||
}
|
||||
|
||||
func (t Tristate) IsFalseOrUnknown() bool {
|
||||
return t == TSFalse || t == TSUnknown
|
||||
}
|
||||
|
||||
func (t Tristate) IsUnknown() bool {
|
||||
return t == TSUnknown
|
||||
}
|
||||
|
||||
func (t Tristate) DefaultIfUnknown(value Tristate) Tristate {
|
||||
if t == TSUnknown {
|
||||
return value
|
||||
}
|
||||
return t
|
||||
}
|
||||
|
||||
func (t *Tristate) UnmarshalJSON(data []byte) error {
|
||||
switch string(data) {
|
||||
case "true":
|
||||
*t = TSTrue
|
||||
case "false":
|
||||
*t = TSFalse
|
||||
default:
|
||||
*t = TSUnknown
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t Tristate) MarshalJSON() ([]byte, error) {
|
||||
switch t {
|
||||
case TSTrue:
|
||||
return []byte("true"), nil
|
||||
case TSFalse:
|
||||
return []byte("false"), nil
|
||||
default:
|
||||
return []byte("null"), nil
|
||||
}
|
||||
}
|
||||
|
||||
func BoolToTristate(b bool) Tristate {
|
||||
if b {
|
||||
return TSTrue
|
||||
}
|
||||
return TSFalse
|
||||
}
|
||||
Reference in New Issue
Block a user