Files
libopenapi/datamodel/low/reference.go
Dave Shanley 13781cbbde Working in generics now to reduce code.
generics are a little funky still. sigh.
2022-08-05 21:57:04 -04:00

47 lines
788 B
Go

package low
import "gopkg.in/yaml.v3"
type HasNode interface {
GetNode() *yaml.Node
}
type Buildable[T any] interface {
Build(node *yaml.Node) error
*T
}
type NodeReference[T any] struct {
Value T
ValueNode *yaml.Node
KeyNode *yaml.Node
}
type KeyReference[T any] struct {
Value T
KeyNode *yaml.Node
}
type ValueReference[T any] struct {
Value T
ValueNode *yaml.Node
}
type ObjectReference struct {
Value interface{}
ValueNode *yaml.Node
KeyNode *yaml.Node
}
func (n NodeReference[T]) IsEmpty() bool {
return n.KeyNode == nil && n.ValueNode == nil
}
func (n NodeReference[T]) IsMapKeyNode() bool {
return n.KeyNode != nil && n.ValueNode == nil
}
func (n NodeReference[T]) IsMapValueNode() bool {
return n.KeyNode == nil && n.ValueNode != nil
}