Documentation

Overview

Package fields implements a simple field system, parsing and matching selectors with sets of fields.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func EscapeValue

func EscapeValue(s string) string

EscapeValue escapes an arbitrary literal string for use as a fieldSelector value

func UnescapeValue

func UnescapeValue(s string) (string, error)

UnescapeValue unescapes a fieldSelector value and returns the original literal value. May return the original string if it contains no escaped or special characters.

Types

type Fields

type Fields interface {
	// Has returns whether the provided field exists.
	Has(field string) (exists bool)

	// Get returns the value for the provided field.
	Get(field string) (value string)
}

Fields allows you to present fields independently from their storage.

type InvalidEscapeSequence

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

InvalidEscapeSequence indicates an error occurred unescaping a field selector

func (InvalidEscapeSequence) Error

func (i InvalidEscapeSequence) Error() string

type Requirement

type Requirement struct {
	Operator selection.Operator
	Field    string
	Value    string
}

Requirement contains a field, a value, and an operator that relates the field and value. This is currently for reading internal selection information of field selector.

type Requirements

type Requirements []Requirement

Requirements is AND of all requirements.

type Selector

type Selector interface {
	// Matches returns true if this selector matches the given set of fields.
	Matches(Fields) bool

	// Empty returns true if this selector does not restrict the selection space.
	Empty() bool

	// RequiresExactMatch allows a caller to introspect whether a given selector
	// requires a single specific field to be set, and if so returns the value it
	// requires.
	RequiresExactMatch(field string) (value string, found bool)

	// Transform returns a new copy of the selector after TransformFunc has been
	// applied to the entire selector, or an error if fn returns an error.
	// If for a given requirement both field and value are transformed to empty
	// string, the requirement is skipped.
	Transform(fn TransformFunc) (Selector, error)

	// Requirements converts this interface to Requirements to expose
	// more detailed selection information.
	Requirements() Requirements

	// String returns a human readable string that represents this selector.
	String() string

	// Make a deep copy of the selector.
	DeepCopySelector() Selector
}

Selector represents a field selector.

func AndSelectors

func AndSelectors(selectors ...Selector) Selector

AndSelectors creates a selector that is the logical AND of all the given selectors

func Everything

func Everything() Selector

Everything returns a selector that matches all fields.

func Nothing

func Nothing() Selector

Nothing returns a selector that matches no fields

func OneTermEqualSelector

func OneTermEqualSelector(k, v string) Selector

OneTermEqualSelector returns an object that matches objects where one field/field equals one value. Cannot return an error.

func OneTermNotEqualSelector

func OneTermNotEqualSelector(k, v string) Selector

OneTermNotEqualSelector returns an object that matches objects where one field/field does not equal one value. Cannot return an error.

func ParseAndTransformSelector

func ParseAndTransformSelector(selector string, fn TransformFunc) (Selector, error)

ParseAndTransformSelector parses the selector and runs them through the given TransformFunc.

func ParseSelector

func ParseSelector(selector string) (Selector, error)

ParseSelector takes a string representing a selector and returns an object suitable for matching, or an error.

func ParseSelectorOrDie

func ParseSelectorOrDie(s string) Selector

ParseSelectorOrDie takes a string representing a selector and returns an object suitable for matching, or panic when an error occur.

func SelectorFromSet

func SelectorFromSet(ls Set) Selector

SelectorFromSet returns a Selector which will match exactly the given Set. A nil Set is considered equivalent to Everything().

type Set

type Set map[string]string

Set is a map of field:value. It implements Fields.

func (Set) AsSelector

func (ls Set) AsSelector() Selector

AsSelector converts fields into a selectors.

func (Set) Get

func (ls Set) Get(field string) string

Get returns the value in the map for the provided field.

func (Set) Has

func (ls Set) Has(field string) bool

Has returns whether the provided field exists in the map.

func (Set) String

func (ls Set) String() string

String returns all fields listed as a human readable string. Conveniently, exactly the format that ParseSelector takes.

type TransformFunc

type TransformFunc func(field, value string) (newField, newValue string, err error)

TransformFunc transforms selectors.

type UnescapedRune

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

UnescapedRune indicates an error occurred unescaping a field selector

func (UnescapedRune) Error

func (i UnescapedRune) Error() string