Documentation
¶
Overview ¶
Package common defines types and utilities common to expression parsing, checking, and interpretation
Index ¶
- Constants
- Variables
- func MultilineDescription(lines ...string) string
- func ParseDescription(doc string) string
- func ParseDescriptions(doc string) []string
- type Doc
- type DocKind
- type Documentor
- type Error
- type Errors
- func (e *Errors) Append(errs []*Error) *Errors
- func (e *Errors) GetErrors() []*Error
- func (e *Errors) ReportError(l Location, format string, args ...any)
- func (e *Errors) ReportErrorAtID(id int64, l Location, format string, args ...any)
- func (e *Errors) ReportErrorString(l Location, message string)
- func (e *Errors) ToDisplayString() string
- type Location
- type Source
- type SourceLocation
Constants ¶
const ( // SelectAndIdentCost is the cost of an operation that accesses an identifier or performs a select. SelectAndIdentCost = 1 // ConstCost is the cost of an operation that accesses a constant. ConstCost = 0 // ListCreateBaseCost is the base cost of any operation that creates a new list. ListCreateBaseCost = 10 // MapCreateBaseCost is the base cost of any operation that creates a new map. MapCreateBaseCost = 30 // StructCreateBaseCost is the base cost of any operation that creates a new struct. StructCreateBaseCost = 40 // StringTraversalCostFactor is multiplied to a length of a string when computing the cost of traversing the entire // string once. StringTraversalCostFactor = 0.1 // RegexStringLengthCostFactor is multiplied ot the length of a regex string pattern when computing the cost of // applying the regex to a string of unit cost. RegexStringLengthCostFactor = 0.25 )
Variables ¶
var ( // NoLocation is a particular illegal location. NoLocation = &SourceLocation{-1, -1} )
Functions ¶
func MultilineDescription ¶ added in v0.25.0
MultilineDescription combines multiple lines into a newline separated string.
func ParseDescription ¶ added in v0.25.0
ParseDescription takes a single string containing newline characters and splits it into a multiline description. All empty lines will be skipped.
Returns an empty string if the input string is empty.
func ParseDescriptions ¶ added in v0.25.0
ParseDescriptions splits a documentation string into multiple multi-line description sections, using blank lines as delimiters.
Types ¶
type Doc ¶ added in v0.25.0
type Doc struct { // Kind specifies the type of documentation element (e.g., Function, Variable). Kind DocKind // Name is the identifier of the documented element (e.g., function name, variable name). Name string // Type is the data type associated with the element, primarily used for variables. Type string // Signature represents the function or overload signature. Signature string // Description holds the textual description of the element, potentially spanning multiple lines. Description string // Children holds nested documentation elements, such as overloads for a function // or examples for a function/macro. Children []*Doc }
Doc holds the documentation details for a specific program element like a variable, function, macro, or example.
func NewExampleDoc ¶ added in v0.25.0
NewExampleDoc creates a new Doc struct specifically for holding an example.
func NewFunctionDoc ¶ added in v0.25.0
NewFunctionDoc creates a new Doc struct for documenting a function.
func NewMacroDoc ¶ added in v0.25.0
NewMacroDoc creates a new Doc struct for documenting a macro.
func NewOverloadDoc ¶ added in v0.25.0
NewOverloadDoc creates a new Doc struct for a function example.
func NewVariableDoc ¶ added in v0.25.0
NewVariableDoc creates a new Doc struct specifically for documenting a variable.
type DocKind ¶ added in v0.25.0
type DocKind int
DocKind indicates the type of documentation element.
const ( // DocEnv represents environment variable documentation. DocEnv DocKind = iota + 1 // DocFunction represents function documentation. DocFunction // DocOverload represents function overload documentation. DocOverload // DocVariable represents variable documentation. DocVariable // DocMacro represents macro documentation. DocMacro // DocExample represents example documentation. DocExample )
type Documentor ¶ added in v0.25.0
type Documentor interface { // Documentation returns the documentation coded by the DocKind to assist // with text formatting. Documentation() *Doc }
Documentor is an interface for types that can provide their own documentation.
type Error ¶
Error type which references an expression id, a location within source, and a message.
func NewError ¶ added in v0.17.0
NewError creates an error associated with an expression id with the given message at the given location.
func (*Error) ToDisplayString ¶
ToDisplayString decorates the error message with the source location.
type Errors ¶
type Errors struct {
// contains filtered or unexported fields
}
Errors type which contains a list of errors observed during parsing.
func (*Errors) Append ¶ added in v0.4.0
Append creates a new Errors object with the current and input errors.
func (*Errors) ReportError ¶
ReportError records an error at a source location.
func (*Errors) ReportErrorAtID ¶ added in v0.17.0
ReportErrorAtID records an error at a source location and expression id.
func (*Errors) ReportErrorString ¶ added in v0.23.0
ReportErrorString records an error at a source location.
func (*Errors) ToDisplayString ¶
ToDisplayString returns the error set to a newline delimited string.
type Location ¶
type Location interface { Line() int // 1-based line number within source. Column() int // 0-based column number within source. }
Location interface to represent a location within Source.
type Source ¶
type Source interface { // Content returns the source content represented as a string. // Examples contents are the single file contents, textbox field, // or url parameter. Content() string // Description gives a brief description of the source. // Example descriptions are a file name or ui element. Description() string // LineOffsets gives the character offsets at which lines occur. // The zero-th entry should refer to the break between the first // and second line, or EOF if there is only one line of source. LineOffsets() []int32 // LocationOffset translates a Location to an offset. // Given the line and column of the Location returns the // Location's character offset in the Source, and a bool // indicating whether the Location was found. LocationOffset(location Location) (int32, bool) // OffsetLocation translates a character offset to a Location, or // false if the conversion was not feasible. OffsetLocation(offset int32) (Location, bool) // NewLocation takes an input line and column and produces a Location. // The default behavior is to treat the line and column as absolute, // but concrete derivations may use this method to convert a relative // line and column position into an absolute location. NewLocation(line, col int) Location // Snippet returns a line of content and whether the line was found. Snippet(line int) (string, bool) }
Source interface for filter source contents.
func NewInfoSource ¶
func NewInfoSource(info *exprpb.SourceInfo) Source
NewInfoSource creates a new Source from a SourceInfo.
func NewStringSource ¶
NewStringSource creates a new Source from the given contents and description.
func NewTextSource ¶
NewTextSource creates a new Source from the input text string.
type SourceLocation ¶
type SourceLocation struct {
// contains filtered or unexported fields
}
SourceLocation helper type to manually construct a location.
func (*SourceLocation) Column ¶
func (l *SourceLocation) Column() int
Column returns the 0-based column number of the location.
func (*SourceLocation) Line ¶
func (l *SourceLocation) Line() int
Line returns the 1-based line of the location.
Directories
¶
Path | Synopsis |
---|---|
Package ast declares data structures useful for parsed and checked abstract syntax trees
|
Package ast declares data structures useful for parsed and checked abstract syntax trees |
Package containers defines types and functions for resolving qualified names within a namespace or type provided to CEL.
|
Package containers defines types and functions for resolving qualified names within a namespace or type provided to CEL. |
Package debug provides tools to print a parsed expression graph and adorn each expression element with additional metadata.
|
Package debug provides tools to print a parsed expression graph and adorn each expression element with additional metadata. |
Package decls contains function and variable declaration structs and helper methods.
|
Package decls contains function and variable declaration structs and helper methods. |
Package env provides a representation of a CEL environment.
|
Package env provides a representation of a CEL environment. |
Package functions defines the standard builtin functions supported by the interpreter
|
Package functions defines the standard builtin functions supported by the interpreter |
Package operators defines the internal function names of operators.
|
Package operators defines the internal function names of operators. |
Package overloads defines the internal overload identifiers for function and operator overloads.
|
Package overloads defines the internal overload identifiers for function and operator overloads. |
Package runes provides interfaces and utilities for working with runes.
|
Package runes provides interfaces and utilities for working with runes. |
Package stdlib contains all of the standard library function declarations and definitions for CEL.
|
Package stdlib contains all of the standard library function declarations and definitions for CEL. |
Package types contains the types, traits, and utilities common to all components of expression handling.
|
Package types contains the types, traits, and utilities common to all components of expression handling. |
pb
Package pb reflects over protocol buffer descriptors to generate objects that simplify type, enum, and field lookup.
|
Package pb reflects over protocol buffer descriptors to generate objects that simplify type, enum, and field lookup. |
ref
Package ref contains the reference interfaces used throughout the types components.
|
Package ref contains the reference interfaces used throughout the types components. |
traits
Package traits defines interfaces that a type may implement to participate in operator overloads and function dispatch.
|
Package traits defines interfaces that a type may implement to participate in operator overloads and function dispatch. |