node

package
v0.0.0-...-0c4ecb5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 13, 2023 License: GPL-3.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsCoherent

func IsCoherent(n Node) error

func ToYAMLString

func ToYAMLString(root Node) string

Types

type Coherent

type Coherent struct {
	Child Node
}

func (*Coherent) AsKey

func (c *Coherent) AsKey() interface{}

func (*Coherent) GetChild

func (c *Coherent) GetChild() []Node

func (*Coherent) IsCoherent

func (c *Coherent) IsCoherent() error

func (*Coherent) IsCoherentWith

func (c *Coherent) IsCoherentWith(n Node) error

func (*Coherent) IsOperator

func (*Coherent) IsOperator() bool

func (*Coherent) MarshalYAML

func (c *Coherent) MarshalYAML() (interface{}, error)

func (*Coherent) String

func (c *Coherent) String() string

type Leaf

type Leaf struct {
	Value reflect.Value
}

func (*Leaf) AsKey

func (l *Leaf) AsKey() interface{}

func (*Leaf) IsCoherent

func (l *Leaf) IsCoherent() error

func (*Leaf) IsCoherentWith

func (l *Leaf) IsCoherentWith(n Node) error

func (*Leaf) IsOperator

func (*Leaf) IsOperator() bool

func (*Leaf) MarshalYAML

func (l *Leaf) MarshalYAML() (interface{}, error)

func (*Leaf) String

func (l *Leaf) String() string

type NArray

type NArray struct {
	Child []Node
}

func (*NArray) AsKey

func (a *NArray) AsKey() interface{}

func (*NArray) IsCoherent

func (a *NArray) IsCoherent() error

func (*NArray) IsCoherentWith

func (a *NArray) IsCoherentWith(n2 Node) error

array is coherent with an other array Array are not ordered : so an element must be coherent with an other element in the other array, symmetricaly multiplicity are not defined,

func (*NArray) IsOperator

func (*NArray) IsOperator() bool

func (*NArray) MarshalYAML

func (a *NArray) MarshalYAML() (interface{}, error)

func (*NArray) String

func (n *NArray) String() string

type NStruct

type NStruct struct {
	Child map[interface{}]NStructValue
}

func (*NStruct) AsKey

func (n *NStruct) AsKey() interface{}

func (*NStruct) IsCoherent

func (n *NStruct) IsCoherent() error

func (*NStruct) IsCoherentWith

func (n *NStruct) IsCoherentWith(n2 Node) error

une struct est coherent avec une autre si les champs présent sont coherent entre eux. coherent doit rester commutatif, on ne peut donc pas faire un coté inclus dans l'autre L'ordre des champs n'est pas important. il faudrait trouver un moyen d'inclusion strict si besoin. (ex: avec regexp, si plusieurs match les faire du plus particuliers au plus général, coherent: {{...},{ ..., "*": nil}) si une clef est absente d'un coté, cela doit être un erreur. si un clef est présente d'un coté, elle doit l'être de l'autre. si clef contient "?" à la fin, (0 or one) la clef n'est pas obligatoire de l'autre.

func (*NStruct) IsOperator

func (*NStruct) IsOperator() bool

func (*NStruct) MarshalYAML

func (n *NStruct) MarshalYAML() (interface{}, error)

func (*NStruct) String

func (n *NStruct) String() string

type NStructValue

type NStructValue struct {
	// contains filtered or unexported fields
}

func (*NStructValue) IsCoherentWithStruct

func (element *NStructValue) IsCoherentWithStruct(s2 *NStruct, from *NStruct) error

func (*NStructValue) String

func (n *NStructValue) String() string

type No

type No struct {
}

func (*No) AsKey

func (n *No) AsKey() interface{}

func (*No) IsCoherent

func (*No) IsCoherent() error

func (*No) IsCoherentWith

func (no *No) IsCoherentWith(n Node) error

func (*No) IsOperator

func (*No) IsOperator() bool

func (*No) MarshalYAML

func (*No) MarshalYAML() (interface{}, error)

func (*No) String

func (*No) String() string

type Node

type Node interface {
	IsCoherent() error
	IsCoherentWith(n Node) error
	String() string
	IsOperator() bool
	AsKey() interface{}
	MarshalYAML() (interface{}, error)
}
var StrZero Node = &Leaf{reflect.ValueOf("")}

func BigUglySwitch

func BigUglySwitch(in interface{}) Node

le pattern d'abstract factory n'aide pas vraiment ici, car C'est vraiment le contenu exact de l'entré qui compte. Je n'ai pas trouvé de moyen d'utiliser les interfaces pour éviter ça. Le gros switch est inévitable, pour créer les nodes.

map et struct sont gérer de la même façon et doivent l'être, elle gènere un array pour gérer les clefs particulières comme "OR" directement Kind() pas encore utilisé : Uintptr Complex64 Complex128 Chan Func Interface Ptr UnsafePointer

func MakeString

func MakeString(s string) Node

type Not

type Not struct {
	Child Node
}

func (*Not) AsKey

func (n *Not) AsKey() interface{}

func (*Not) GetChild

func (n *Not) GetChild() []Node

func (*Not) IsCoherent

func (n *Not) IsCoherent() error

func (*Not) IsCoherentWith

func (n *Not) IsCoherentWith(o Node) error

func (*Not) IsOperator

func (*Not) IsOperator() bool

func (*Not) MarshalYAML

func (n *Not) MarshalYAML() (interface{}, error)

func (*Not) String

func (n *Not) String() string

type OR

type OR struct {
	Child Node
}

func (*OR) AsKey

func (o *OR) AsKey() interface{}

func (*OR) GetChild

func (or *OR) GetChild() []Node

func (*OR) IsCoherent

func (or *OR) IsCoherent() error

func (*OR) IsCoherentWith

func (or *OR) IsCoherentWith(n Node) error

func (*OR) IsOperator

func (*OR) IsOperator() bool

func (*OR) MarshalYAML

func (o *OR) MarshalYAML() (interface{}, error)

func (*OR) String

func (o *OR) String() string

type Yes

type Yes struct {
}

func (*Yes) AsKey

func (y *Yes) AsKey() interface{}

func (*Yes) IsCoherent

func (*Yes) IsCoherent() error

func (*Yes) IsCoherentWith

func (*Yes) IsCoherentWith(n Node) error

func (*Yes) IsOperator

func (*Yes) IsOperator() bool

func (*Yes) MarshalYAML

func (*Yes) MarshalYAML() (interface{}, error)

func (*Yes) String

func (*Yes) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL