Documentation ¶
Overview ¶
Package interpreter contains the EQL interpreter.
Index ¶
- Constants
- Variables
- type CondRuntime
- type FuncShow
- type FuncShowInst
- type FuncWhere
- type GetRuntimeProvider
- type LookupRuntimeProvider
- type NodeInfo
- type ResultError
- type RuntimeError
- type SearchHeader
- type SearchResult
- func (sr *SearchResult) CSV() string
- func (sr *SearchResult) Header() *SearchHeader
- func (sr *SearchResult) Query() string
- func (sr *SearchResult) Row(line int) []interface{}
- func (sr *SearchResult) RowCount() int
- func (sr *SearchResult) RowSource(line int) []string
- func (sr *SearchResult) RowSources() [][]string
- func (sr *SearchResult) Rows() [][]interface{}
- func (sr *SearchResult) StableSort()
- func (sr *SearchResult) String() string
- type SearchResultRowComparator
Constants ¶
const GroupNodeKind = "group"
GroupNodeKind is a special group node kind
Variables ¶
var ( ErrNotARegex = errors.New("Value of operand is not a valid regex") ErrNotANumber = errors.New("Value of operand is not a number") ErrNotAList = errors.New("Value of operand is not a list") ErrInvalidConstruct = errors.New("Invalid construct") ErrUnknownNodeKind = errors.New("Unknown node kind") ErrInvalidSpec = errors.New("Invalid traversal spec") ErrInvalidWhere = errors.New("Invalid where clause") ErrInvalidColData = errors.New("Invalid column data spec") ErrEmptyTraversal = errors.New("Empty traversal") )
Runtime related error types
Functions ¶
This section is empty.
Types ¶
type CondRuntime ¶
type CondRuntime interface { /* CondEval evaluates this condition runtime element. */ CondEval(node data.Node, edge data.Edge) (interface{}, error) }
CondRuntime is a component of a condition which can be evaluated with a node and an edge.
type FuncShow ¶
type FuncShow interface {
// contains filtered or unexported methods
}
FuncShow is the interface definition for show related functions
type FuncShowInst ¶
type FuncShowInst func(astNode *parser.ASTNode, rtp *eqlRuntimeProvider) (FuncShow, string, string, error)
FuncShowInst creates a function object. Returns which column data should be queried and how the colummn should be named.
type FuncWhere ¶
type FuncWhere func(astNode *parser.ASTNode, rtp *eqlRuntimeProvider, node data.Node, edge data.Edge) (interface{}, error)
FuncWhere represents a where related function.
type GetRuntimeProvider ¶
type GetRuntimeProvider struct {
// contains filtered or unexported fields
}
GetRuntimeProvider data structure
func NewGetRuntimeProvider ¶
func NewGetRuntimeProvider(name string, part string, gm *graph.Manager, ni NodeInfo) *GetRuntimeProvider
NewGetRuntimeProvider creates a new GetRuntimeProvider object. This provider can interpret GET queries.
type LookupRuntimeProvider ¶
type LookupRuntimeProvider struct {
// contains filtered or unexported fields
}
LookupRuntimeProvider data structure
func NewLookupRuntimeProvider ¶
func NewLookupRuntimeProvider(name string, part string, gm *graph.Manager, ni NodeInfo) *LookupRuntimeProvider
NewLookupRuntimeProvider creates a new LookupRuntimeProvider object. This provider can interpret LOOKUP queries.
type NodeInfo ¶
type NodeInfo interface { /* SummaryAttributes returns the attributes which should be shown in a list view for a given node kind. */ SummaryAttributes(kind string) []string /* Return the display string for a given attribute. */ AttributeDisplayString(kind string, attr string) string /* Check if a given string can be a valid node attribute. */ IsValidAttr(attr string) bool }
NodeInfo interface. NodeInfo objects are used by the EQL interpreter to format search results.
func NewDefaultNodeInfo ¶
NewDefaultNodeInfo creates a new default NodeInfo instance. The default NodeInfo provides the most generic rendering information to the interpreter.
type ResultError ¶
type ResultError struct { Source string // Name of the source which was given to the parser Type error // Error type (to be used for equal checks) Detail string // Details of this error }
ResultError is a result related error (e.g. wrong defined show clause)
func (*ResultError) Error ¶
func (re *ResultError) Error() string
Error returns a human-readable string representation of this error.
type RuntimeError ¶
type RuntimeError struct { Source string // Name of the source which was given to the parser Type error // Error type (to be used for equal checks) Detail string // Details of this error Node *parser.ASTNode // AST Node where the error occurred Line int // Line of the error Pos int // Position of the error }
RuntimeError is a runtime related error
func (*RuntimeError) Error ¶
func (re *RuntimeError) Error() string
Error returns a human-readable string representation of this error.
type SearchHeader ¶
type SearchHeader struct { ResPrimaryKind string // Primary node kind ResPartition string // Partition of result ColLabels []string // Labels for columns ColFormat []string // Format for columns ColData []string // Data which should be displayed in the columns }
SearchHeader is the header of a search result.
func (*SearchHeader) Data ¶
func (sh *SearchHeader) Data() []string
Data returns the data which is displayed in each column of a search result. (e.g. 1:n:name - Name of starting nodes,
3:e:key - Key of edge traversed in the second traversal)
func (*SearchHeader) Format ¶
func (sh *SearchHeader) Format() []string
Format returns all column format definitions of a search result.
func (*SearchHeader) Labels ¶
func (sh *SearchHeader) Labels() []string
Labels returns all column labels of a search result.
func (*SearchHeader) Partition ¶
func (sh *SearchHeader) Partition() string
Partition returns the partition of a search result.
func (*SearchHeader) PrimaryKind ¶
func (sh *SearchHeader) PrimaryKind() string
PrimaryKind returns the primary kind of a search result.
type SearchResult ¶
type SearchResult struct { SearchHeader // Embedded search header Source [][]string // Special string holding the data source (node / edge) for each column Data [][]interface{} // Data which is held by this search result // contains filtered or unexported fields }
SearchResult data structure. A search result represents the result of an EQL query.
func (*SearchResult) CSV ¶
func (sr *SearchResult) CSV() string
CSV returns this search result as comma-separated strings.
func (*SearchResult) Header ¶
func (sr *SearchResult) Header() *SearchHeader
Header returns all column headers.
func (*SearchResult) Query ¶
func (sr *SearchResult) Query() string
Query returns the query which produced this result.
func (*SearchResult) Row ¶
func (sr *SearchResult) Row(line int) []interface{}
Row returns a row of the result.
func (*SearchResult) RowCount ¶
func (sr *SearchResult) RowCount() int
RowCount returns the number of rows of the result.
func (*SearchResult) RowSource ¶
func (sr *SearchResult) RowSource(line int) []string
RowSource returns the sources of a result row. Format is either: <n/e>:<kind>:<key> or q:<query>
func (*SearchResult) RowSources ¶
func (sr *SearchResult) RowSources() [][]string
RowSources returns the sources of a result.
func (*SearchResult) StableSort ¶
func (sr *SearchResult) StableSort()
StableSort sorts the rows of the result in a stable 100% reproducible way.
func (*SearchResult) String ¶
func (sr *SearchResult) String() string
String returns a string representation of this search result.
type SearchResultRowComparator ¶
type SearchResultRowComparator struct { Ascening bool // Sort should be ascending Column int // Column to sort Data [][]interface{} // Data to sort Source [][]string // Source entries which follow the data }
SearchResultRowComparator is a comparator object used for sorting the result
func (SearchResultRowComparator) Len ¶
func (c SearchResultRowComparator) Len() int
func (SearchResultRowComparator) Less ¶
func (c SearchResultRowComparator) Less(i, j int) bool
func (SearchResultRowComparator) Swap ¶
func (c SearchResultRowComparator) Swap(i, j int)