Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrNameEmpty is returned when a definition has an empty name. ErrNameEmpty = errors.New("action: name must not be empty") // ErrNameInvalid is returned when a name contains characters that // are not valid in a JSON key (letters, digits, underscores, hyphens). ErrNameInvalid = errors.New("action: name is not a valid identifier") // ErrDescriptionTooLong is returned when description exceeds 255 // characters. ErrDescriptionTooLong = errors.New("action: description must be 255 characters or fewer") // ErrCardinalityInvalid is returned when a cardinality value is not // Single or Multi. ErrCardinalityInvalid = errors.New("action: invalid cardinality") // ErrCardinalityUnknown is returned when a cardinality string cannot // be parsed. ErrCardinalityUnknown = errors.New("action: unknown cardinality") )
Functions ¶
func WithMulti ¶
func WithMulti[V Valuable](d *Definition[V])
WithMulti sets the cardinality to Multi. Shorthand for WithCardinality(Multi).
Types ¶
type Cardinality ¶
type Cardinality int
Cardinality defines how an action accumulates values across rules.
const ( // Single means at most once per rule. Across rules, last match wins. Single Cardinality = iota // Multi may appear multiple times. All values accumulate, duplicates // stripped. Multi )
func ParseCardinality ¶
func ParseCardinality(s string) (Cardinality, error)
ParseCardinality parses a string into a Cardinality. Accepts "single" and "multi" (case-sensitive). Returns an error for unrecognised values.
func (Cardinality) IsValid ¶
func (c Cardinality) IsValid() bool
IsValid returns true if the cardinality is a known value.
func (Cardinality) String ¶
func (c Cardinality) String() string
func (Cardinality) Validate ¶
func (c Cardinality) Validate() error
Validate returns an error if the cardinality is not a known value.
type Definition ¶
type Definition[V Valuable] struct { // contains filtered or unexported fields }
Definition is the validated metadata for an action. Created via Define or MustDefine.
func Define ¶
func Define[V Valuable](name string, opts ...DefinitionOpt[V]) (Definition[V], error)
Define creates a validated Definition. Name must be non-empty and a valid JSON key (letters, digits, underscores, hyphens; must start with a letter or underscore). Description, if present, must be 255 characters or fewer.
func MustDefine ¶
func MustDefine[V Valuable](name string, opts ...DefinitionOpt[V]) Definition[V]
MustDefine is like Define but panics on error.
func (Definition[V]) Cardinality ¶
func (d Definition[V]) Cardinality() Cardinality
Cardinality returns the action's cardinality.
func (Definition[V]) Description ¶
func (d Definition[V]) Description() string
Description returns the action's description.
func (Definition[V]) IsZero ¶
func (d Definition[V]) IsZero() bool
IsZero returns true if the definition was not created via Define or MustDefine.
func (Definition[V]) Terminal ¶
func (d Definition[V]) Terminal() bool
Terminal returns whether the action is terminal.
type DefinitionOpt ¶
type DefinitionOpt[V Valuable] func(*Definition[V])
DefinitionOpt configures a Definition.
func Terminal ¶
func Terminal[V Valuable](v bool) DefinitionOpt[V]
Terminal marks the action as terminal — evaluation halts when it fires.
func WithCardinality ¶
func WithCardinality[V Valuable](c Cardinality) DefinitionOpt[V]
WithCardinality sets how values accumulate — Single (last wins) or Multi (all values collected, deduped).
func WithDescription ¶
func WithDescription[V Valuable](s string) DefinitionOpt[V]
WithDescription sets an optional human-readable description. Must be 255 characters or fewer.