Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IsCoherent ¶
func ToYAMLString ¶
Types ¶
type Coherent ¶
type Coherent struct {
Child Node
}
func (*Coherent) IsCoherent ¶
func (*Coherent) IsCoherentWith ¶
func (*Coherent) IsOperator ¶
func (*Coherent) MarshalYAML ¶
type Leaf ¶
func (*Leaf) IsCoherent ¶
func (*Leaf) IsCoherentWith ¶
func (*Leaf) IsOperator ¶
func (*Leaf) MarshalYAML ¶
type NArray ¶
type NArray struct {
Child []Node
}
func (*NArray) IsCoherent ¶
func (*NArray) IsCoherentWith ¶
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) MarshalYAML ¶
type NStruct ¶
type NStruct struct {
Child map[interface{}]NStructValue
}
func (*NStruct) IsCoherent ¶
func (*NStruct) IsCoherentWith ¶
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) MarshalYAML ¶
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) IsCoherent ¶
func (*No) IsCoherentWith ¶
func (*No) IsOperator ¶
func (*No) MarshalYAML ¶
type Node ¶
type Node interface { IsCoherent() error IsCoherentWith(n Node) error String() string IsOperator() bool AsKey() interface{} MarshalYAML() (interface{}, error) }
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 ¶
type Not ¶
type Not struct {
Child Node
}
func (*Not) IsCoherent ¶
func (*Not) IsCoherentWith ¶
func (*Not) IsOperator ¶
func (*Not) MarshalYAML ¶
type OR ¶
type OR struct {
Child Node
}
func (*OR) IsCoherent ¶
func (*OR) IsCoherentWith ¶
func (*OR) IsOperator ¶
func (*OR) MarshalYAML ¶
type Yes ¶
type Yes struct { }