Documentation ¶
Overview ¶
Package parser implements decoding and encoding between a flat map of labels and a typed Configuration.
Index ¶
- Constants
- func AddMetadata(element interface{}, node *Node) error
- func Decode(labels map[string]string, element interface{}, rootName string, ...) error
- func Encode(element interface{}, rootName string) (map[string]string, error)
- func EncodeNode(node *Node) map[string]string
- func Fill(element interface{}, node *Node) error
- func IsExported(f reflect.StructField) bool
- type Flat
- type FlatOpts
- type Node
Constants ¶
const ( // TagLabel allows to apply a custom behavior. // - "allowEmpty": allows to create an empty struct. // - "-": ignore the field. TagLabel = "label" // TagLabelSliceAsStruct allows to use a slice of struct by creating one entry into the slice. // The value is the substitution name used in the label to access the slice. TagLabelSliceAsStruct = "label-slice-as-struct" // TagDescription is the documentation for the field. TagDescription = "description" // TagLabelAllowEmpty is related to TagLabel. TagLabelAllowEmpty = "allowEmpty" )
const DefaultRootName = "traefik"
DefaultRootName is the default name of the root node and the prefix of element name from the resources.
const MapNamePlaceholder = "<name>"
MapNamePlaceholder is the placeholder for the map name.
Variables ¶
This section is empty.
Functions ¶
func AddMetadata ¶
AddMetadata adds metadata such as type, inferred from element, to a node.
func Decode ¶
func Decode(labels map[string]string, element interface{}, rootName string, filters ...string) error
Decode decodes the given map of labels into the given element. If any filters are present, labels which do not match the filters are skipped. The operation goes through three stages roughly summarized as: labels -> tree of untyped nodes untyped nodes -> nodes augmented with metadata such as kind (inferred from element) "typed" nodes -> typed element
func EncodeNode ¶
EncodeNode Converts a node to labels. nodes -> labels
func IsExported ¶
func IsExported(f reflect.StructField) bool
IsExported reports whether f is exported. https://golang.org/pkg/reflect/#StructField
Types ¶
type Flat ¶
Flat is a configuration item representation.
func EncodeToFlat ¶
EncodeToFlat encodes a node to a Flat representation. Even though the given node argument should have already been augmented with metadata such as kind, the element (and its type information) is still needed to treat remaining edge cases.
type FlatOpts ¶
type FlatOpts struct { Case string // "lower" or "upper", defaults to "lower". Separator string SkipRoot bool }
FlatOpts holds options used when encoding to Flat.
type Node ¶
type Node struct { Name string `json:"name"` Description string `json:"description,omitempty"` FieldName string `json:"fieldName"` Value string `json:"value,omitempty"` Disabled bool `json:"disabled,omitempty"` Kind reflect.Kind `json:"kind,omitempty"` Tag reflect.StructTag `json:"tag,omitempty"` Children []*Node `json:"children,omitempty"` }
Node is a label node.
func DecodeToNode ¶
DecodeToNode converts the labels to a tree of nodes. If any filters are present, labels which do not match the filters are skipped.