Documentation
¶
Overview ¶
Package plugin implements a plugin layer for component statements. Exports the required interface that must be implemented by plugins.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ComponentStmt ¶
type ComponentStmt interface {
// Generated code for calling. It can be ast.AssignStmt or ast.ExprStmt
Stmt() ast.Stmt
// Varaiables are used for calling with type.
InputFields() []*ast.Field
// Result variables for a component.
OutputFields() []*ast.Field
// Statements are called after a component statement.
ErrStmt() *ast.BlockStmt
// Component name
Name() string
}
ComponentStmt interface is used by a plugin
type Context ¶
type Context interface {
FindInputByType(ast.Expr) *ast.Field
AddInput(ast.Expr) *ast.Field
OutputList() []*ast.Field
}
Context interface uses for searching variable in stack of variables and adding a new input to a component function
type Plugin ¶
type Plugin interface {
// Imports which are added if plugins are used
Imports() []string
// Hook for adding new statements before calling a component statement.
//
// Second argument - component name
//
// Third argument - result of calling InputFields()
Before(Context, string, []*ast.Field) []ast.Stmt
// Hook for adding new statements after calling a component statement.
//
// Second argument - component name
//
// Third argument - result of calling OutputFields()
Success(Context, string, []*ast.Field) []ast.Stmt
// Hook for changing a component statement and failure component statements.
// Return value is a mark - code changed or not. If code has changes then imports are added.
Change(Context, ComponentStmt) bool
}
Plugin interface that must be implemented by plugins
Click to show internal directories.
Click to hide internal directories.