Namespace: go.std.text.template.parse
v1.0Contents
Summary
Provides a low-level interface to the text/template/parse package.
Package parse builds parse trees for templates as defined by text/template
and html/template. Clients should use those packages to construct templates
rather than this one, which provides shared internal data structures not
intended for general use.
Index
- *ActionNode
- *BoolNode
- *BranchNode
- *BreakNode
- *ChainNode
- *CommandNode
- *CommentNode
- *ContinueNode
- *DotNode
- *FieldNode
- *IdentifierNode
- *IfNode
- *ListNode
- *Mode
- *NilNode
- *NodeType
- *NumberNode
- *PipeNode
- *Pos
- *RangeNode
- *StringNode
- *TemplateNode
- *TextNode
- *Tree
- *VariableNode
- *WithNode
- ActionNode
- BoolNode
- BranchNode
- BreakNode
- ChainNode
- CommandNode
- CommentNode
- ContinueNode
- DotNode
- FieldNode
- IdentifierNode
- IfNode
- IsEmptyTree
- ListNode
- Mode
- NewIdentifier
- NilNode
- Node
- NodeAction
- NodeBool
- NodeBreak
- NodeChain
- NodeCommand
- NodeComment
- NodeContinue
- NodeDot
- NodeField
- NodeIdentifier
- NodeIf
- NodeList
- NodeNil
- NodeNumber
- NodePipe
- NodeRange
- NodeString
- NodeTemplate
- NodeText
- NodeType
- NodeVariable
- NodeWith
- NumberNode
- ParseComments
- PipeNode
- Pos
- RangeNode
- SkipFuncCheck
- StringNode
- TemplateNode
- TextNode
- Tree
- VariableNode
- WithNode
- arrayOfActionNode
- arrayOfBoolNode
- arrayOfBranchNode
- arrayOfBreakNode
- arrayOfChainNode
- arrayOfCommandNode
- arrayOfCommentNode
- arrayOfContinueNode
- arrayOfDotNode
- arrayOfFieldNode
- arrayOfIdentifierNode
- arrayOfIfNode
- arrayOfListNode
- arrayOfMode
- arrayOfNilNode
- arrayOfNode
- arrayOfNodeType
- arrayOfNumberNode
- arrayOfPipeNode
- arrayOfPos
- arrayOfRangeNode
- arrayOfStringNode
- arrayOfTemplateNode
- arrayOfTextNode
- arrayOfTree
- arrayOfVariableNode
- arrayOfWithNode
Legend
-
Constant
Variable
Function
Macro
Special form
Type
GoVar
Receiver/Method
Constants
Constants are variables with :const true in their metadata. Joker currently does not recognize them as special; as such, it allows redefining them or their values.-
(None.)
Variables
-
NodeAction
GoObject v1.0A non-control action such as a field evaluation.
-
NodeBool
GoObject v1.0A boolean constant.
-
NodeBreak
GoObject v1.0A break action.
-
NodeChain
GoObject v1.0A sequence of field accesses.
-
NodeCommand
GoObject v1.0An element of a pipeline.
-
NodeComment
GoObject v1.0A comment.
-
NodeContinue
GoObject v1.0A continue action.
-
NodeDot
GoObject v1.0The cursor, dot.
-
NodeField
GoObject v1.0A field or method name.
-
NodeIdentifier
GoObject v1.0An identifier; always a function name.
-
NodeIf
GoObject v1.0An if action.
-
NodeList
GoObject v1.0A list of Nodes.
-
NodeNil
GoObject v1.0An untyped nil constant.
-
NodeNumber
GoObject v1.0A numerical constant.
-
NodePipe
GoObject v1.0A pipeline of commands.
-
NodeRange
GoObject v1.0A range action.
-
NodeString
GoObject v1.0A string constant.
-
NodeTemplate
GoObject v1.0A template invocation action.
-
NodeText
GoObject v1.0Plain text.
-
NodeVariable
GoObject v1.0A $ variable.
-
NodeWith
GoObject v1.0A with action.
-
ParseComments
GoObject v1.0parse comments and add them to AST
-
SkipFuncCheck
GoObject v1.0do not check that functions are defined
Functions, Macros, and Special Forms
-
IsEmptyTree
Function v1.0(IsEmptyTree n)
IsEmptyTree reports whether this tree (node) is empty of everything but space or comments.
Go input arguments: (n Node)
Go returns: bool
Joker input arguments: [^Node n]
Joker returns: ^Boolean -
NewIdentifier
Function v1.0(NewIdentifier ident)
NewIdentifier returns a new IdentifierNode with the given identifier name.
Go input arguments: (ident string)
Go returns: *IdentifierNode
Joker input arguments: [^String ident]
Joker returns: ^*IdentifierNode
Types
-
*ActionNode
Concrete Type v1.0ActionNode holds an action (something bounded by delimiters).
Control actions have their own nodes; ActionNode represents simple
ones such as field evaluations and parenthesized pipelines.
-
Copy
Receiver for *ActionNode v1.0([])
-
Position
Receiver for *ActionNode v1.0([])
-
String
Receiver for *ActionNode v1.0([])
-
Type
Receiver for *ActionNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*BoolNode
Concrete Type v1.0BoolNode holds a boolean constant.
-
Copy
Receiver for *BoolNode v1.0([])
-
Position
Receiver for *BoolNode v1.0([])
-
String
Receiver for *BoolNode v1.0([])
-
Type
Receiver for *BoolNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*BranchNode
Concrete Type v1.0BranchNode is the common representation of if, range, and with.
-
Copy
Receiver for *BranchNode v1.0([])
-
Position
Receiver for *BranchNode v1.0([])
-
String
Receiver for *BranchNode v1.0([])
-
Type
Receiver for *BranchNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*BreakNode
Concrete Type v1.0BreakNode represents a {{break}} action.
-
Copy
Receiver for *BreakNode v1.0([])
-
Position
Receiver for *BreakNode v1.0([])
-
String
Receiver for *BreakNode v1.0([])
-
Type
Receiver for *BreakNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*ChainNode
Concrete Type v1.0ChainNode holds a term followed by a chain of field accesses (identifier starting with '.').
The names may be chained ('.x.y').
The periods are dropped from each ident.
-
Add
Receiver for *ChainNode v1.0([field])
Add adds the named field (which should start with a period) to the end of the chain.
-
Copy
Receiver for *ChainNode v1.0([])
-
Position
Receiver for *ChainNode v1.0([])
-
String
Receiver for *ChainNode v1.0([])
-
Type
Receiver for *ChainNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*CommandNode
Concrete Type v1.0CommandNode holds a command (a pipeline inside an evaluating action).
-
Copy
Receiver for *CommandNode v1.0([])
-
Position
Receiver for *CommandNode v1.0([])
-
String
Receiver for *CommandNode v1.0([])
-
Type
Receiver for *CommandNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*CommentNode
Concrete Type v1.0CommentNode holds a comment.
-
Copy
Receiver for *CommentNode v1.0([])
-
Position
Receiver for *CommentNode v1.0([])
-
String
Receiver for *CommentNode v1.0([])
-
Type
Receiver for *CommentNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*ContinueNode
Concrete Type v1.0ContinueNode represents a {{continue}} action.
-
Copy
Receiver for *ContinueNode v1.0([])
-
Position
Receiver for *ContinueNode v1.0([])
-
String
Receiver for *ContinueNode v1.0([])
-
Type
Receiver for *ContinueNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*DotNode
Concrete Type v1.0DotNode holds the special identifier '.'.
-
Copy
Receiver for *DotNode v1.0([])
-
Position
Receiver for *DotNode v1.0([])
-
String
Receiver for *DotNode v1.0([])
-
Type
Receiver for *DotNode v1.0([])
-
*FieldNode
Concrete Type v1.0FieldNode holds a field (identifier starting with '.').
The names may be chained ('.x.y').
The period is dropped from each ident.
-
Copy
Receiver for *FieldNode v1.0([])
-
Position
Receiver for *FieldNode v1.0([])
-
String
Receiver for *FieldNode v1.0([])
-
Type
Receiver for *FieldNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*IdentifierNode
Concrete Type v1.0IdentifierNode holds an identifier.
-
Copy
Receiver for *IdentifierNode v1.0([])
-
Position
Receiver for *IdentifierNode v1.0([])
-
SetPos
Receiver for *IdentifierNode v1.0([pos])
SetPos sets the position. NewIdentifier is a public method so we can't modify its signature.
Chained for convenience.
TODO: fix one day?
-
SetTree
Receiver for *IdentifierNode v1.0([t])
SetTree sets the parent tree for the node. NewIdentifier is a public method so we can't modify its signature.
Chained for convenience.
TODO: fix one day?
-
String
Receiver for *IdentifierNode v1.0([])
-
Type
Receiver for *IdentifierNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*IfNode
Concrete Type v1.0IfNode represents an {{if}} action and its commands.
-
Copy
Receiver for *IfNode v1.0([])
-
String
Receiver for *IfNode v1.0([])
-
*ListNode
Concrete Type v1.0ListNode holds a sequence of nodes.
-
Copy
Receiver for *ListNode v1.0([])
-
CopyList
Receiver for *ListNode v1.0([])
-
Position
Receiver for *ListNode v1.0([])
-
String
Receiver for *ListNode v1.0([])
-
Type
Receiver for *ListNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*Mode
Concrete Type v1.0A mode value is a set of flags (or 0). Modes control parser behavior.
-
*NilNode
Concrete Type v1.0NilNode holds the special identifier 'nil' representing an untyped nil constant.
-
Copy
Receiver for *NilNode v1.0([])
-
Position
Receiver for *NilNode v1.0([])
-
String
Receiver for *NilNode v1.0([])
-
Type
Receiver for *NilNode v1.0([])
-
*NodeType
Concrete Type v1.0NodeType identifies the type of a parse tree node.
-
*NumberNode
Concrete Type v1.0NumberNode holds a number: signed or unsigned integer, float, or complex.
The value is parsed and stored under all the types that can represent the value.
This simulates in a small amount of code the behavior of Go's ideal constants.
-
Copy
Receiver for *NumberNode v1.0([])
-
Position
Receiver for *NumberNode v1.0([])
-
String
Receiver for *NumberNode v1.0([])
-
Type
Receiver for *NumberNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*PipeNode
Concrete Type v1.0PipeNode holds a pipeline with optional declaration
-
Copy
Receiver for *PipeNode v1.0([])
-
CopyPipe
Receiver for *PipeNode v1.0([])
-
Position
Receiver for *PipeNode v1.0([])
-
String
Receiver for *PipeNode v1.0([])
-
Type
Receiver for *PipeNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*Pos
Concrete Type v1.0Pos represents a byte position in the original input text from which
this template was parsed.
-
*RangeNode
Concrete Type v1.0RangeNode represents a {{range}} action and its commands.
-
Copy
Receiver for *RangeNode v1.0([])
-
String
Receiver for *RangeNode v1.0([])
-
*StringNode
Concrete Type v1.0StringNode holds a string constant. The value has been "unquoted".
-
Copy
Receiver for *StringNode v1.0([])
-
Position
Receiver for *StringNode v1.0([])
-
String
Receiver for *StringNode v1.0([])
-
Type
Receiver for *StringNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*TemplateNode
Concrete Type v1.0TemplateNode represents a {{template}} action.
-
Copy
Receiver for *TemplateNode v1.0([])
-
Position
Receiver for *TemplateNode v1.0([])
-
String
Receiver for *TemplateNode v1.0([])
-
Type
Receiver for *TemplateNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*TextNode
Concrete Type v1.0TextNode holds plain text.
-
Copy
Receiver for *TextNode v1.0([])
-
Position
Receiver for *TextNode v1.0([])
-
String
Receiver for *TextNode v1.0([])
-
Type
Receiver for *TextNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*Tree
Concrete Type v1.0Tree is the representation of a single parsed template.
-
Copy
Receiver for *Tree v1.0([])
Copy returns a copy of the Tree. Any parsing state is discarded.
-
ErrorContext
Receiver for *Tree v1.0([n])
ErrorContext returns a textual representation of the location of the node in the input text.
The receiver is only used when the node does not have a pointer to the tree inside,
which can occur in old code.
-
*VariableNode
Concrete Type v1.0VariableNode holds a list of variable names, possibly with chained field
accesses. The dollar sign is part of the (first) name.
-
Copy
Receiver for *VariableNode v1.0([])
-
Position
Receiver for *VariableNode v1.0([])
-
String
Receiver for *VariableNode v1.0([])
-
Type
Receiver for *VariableNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
*WithNode
Concrete Type v1.0WithNode represents a {{with}} action and its commands.
-
Copy
Receiver for *WithNode v1.0([])
-
String
Receiver for *WithNode v1.0([])
-
ActionNode
Concrete Type v1.0ActionNode holds an action (something bounded by delimiters).
Control actions have their own nodes; ActionNode represents simple
ones such as field evaluations and parenthesized pipelines.
-
Position
Receiver for ActionNode v1.0([])
-
Type
Receiver for ActionNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
BoolNode
Concrete Type v1.0BoolNode holds a boolean constant.
-
Position
Receiver for BoolNode v1.0([])
-
Type
Receiver for BoolNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
BranchNode
Concrete Type v1.0BranchNode is the common representation of if, range, and with.
-
Position
Receiver for BranchNode v1.0([])
-
Type
Receiver for BranchNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
BreakNode
Concrete Type v1.0BreakNode represents a {{break}} action.
-
Position
Receiver for BreakNode v1.0([])
-
Type
Receiver for BreakNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
ChainNode
Concrete Type v1.0ChainNode holds a term followed by a chain of field accesses (identifier starting with '.').
The names may be chained ('.x.y').
The periods are dropped from each ident.
-
Position
Receiver for ChainNode v1.0([])
-
Type
Receiver for ChainNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
CommandNode
Concrete Type v1.0CommandNode holds a command (a pipeline inside an evaluating action).
-
Position
Receiver for CommandNode v1.0([])
-
Type
Receiver for CommandNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
CommentNode
Concrete Type v1.0CommentNode holds a comment.
-
Position
Receiver for CommentNode v1.0([])
-
Type
Receiver for CommentNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
ContinueNode
Concrete Type v1.0ContinueNode represents a {{continue}} action.
-
Position
Receiver for ContinueNode v1.0([])
-
Type
Receiver for ContinueNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
DotNode
Concrete Type v1.0DotNode holds the special identifier '.'.
-
Position
Receiver for DotNode v1.0([])
-
FieldNode
Concrete Type v1.0FieldNode holds a field (identifier starting with '.').
The names may be chained ('.x.y').
The period is dropped from each ident.
-
Position
Receiver for FieldNode v1.0([])
-
Type
Receiver for FieldNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
IdentifierNode
Concrete Type v1.0IdentifierNode holds an identifier.
-
Position
Receiver for IdentifierNode v1.0([])
-
Type
Receiver for IdentifierNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
IfNode
Concrete Type v1.0IfNode represents an {{if}} action and its commands.
-
ListNode
Concrete Type v1.0ListNode holds a sequence of nodes.
-
Position
Receiver for ListNode v1.0([])
-
Type
Receiver for ListNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
Mode
Concrete Type v1.0A mode value is a set of flags (or 0). Modes control parser behavior.
-
NilNode
Concrete Type v1.0NilNode holds the special identifier 'nil' representing an untyped nil constant.
-
Position
Receiver for NilNode v1.0([])
-
Node
Abstract Type v1.0A Node is an element in the parse tree. The interface is trivial.
The interface contains an unexported method so that only
types local to this package can satisfy it.
-
Copy
Method for Node v1.0([])
-
Position
Method for Node v1.0([])
-
String
Method for Node v1.0([])
-
Type
Method for Node v1.0([])
-
NodeType
Concrete Type v1.0NodeType identifies the type of a parse tree node.
-
Type
Receiver for NodeType v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
NumberNode
Concrete Type v1.0NumberNode holds a number: signed or unsigned integer, float, or complex.
The value is parsed and stored under all the types that can represent the value.
This simulates in a small amount of code the behavior of Go's ideal constants.
-
Position
Receiver for NumberNode v1.0([])
-
Type
Receiver for NumberNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
PipeNode
Concrete Type v1.0PipeNode holds a pipeline with optional declaration
-
Position
Receiver for PipeNode v1.0([])
-
Type
Receiver for PipeNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
Pos
Concrete Type v1.0Pos represents a byte position in the original input text from which
this template was parsed.
-
Position
Receiver for Pos v1.0([])
-
RangeNode
Concrete Type v1.0RangeNode represents a {{range}} action and its commands.
-
StringNode
Concrete Type v1.0StringNode holds a string constant. The value has been "unquoted".
-
Position
Receiver for StringNode v1.0([])
-
Type
Receiver for StringNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
TemplateNode
Concrete Type v1.0TemplateNode represents a {{template}} action.
-
Position
Receiver for TemplateNode v1.0([])
-
Type
Receiver for TemplateNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
TextNode
Concrete Type v1.0TextNode holds plain text.
-
Position
Receiver for TextNode v1.0([])
-
Type
Receiver for TextNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
Tree
Concrete Type v1.0Tree is the representation of a single parsed template.
-
VariableNode
Concrete Type v1.0VariableNode holds a list of variable names, possibly with chained field
accesses. The dollar sign is part of the (first) name.
-
Position
Receiver for VariableNode v1.0([])
-
Type
Receiver for VariableNode v1.0([])
Type returns itself and provides an easy default implementation
for embedding in a Node. Embedded in all non-trivial Nodes.
-
WithNode
Concrete Type v1.0WithNode represents a {{with}} action and its commands.
-
arrayOfActionNode
Concrete Type v1.0ActionNode holds an action (something bounded by delimiters).
Control actions have their own nodes; ActionNode represents simple
ones such as field evaluations and parenthesized pipelines.
-
arrayOfBoolNode
Concrete Type v1.0BoolNode holds a boolean constant.
-
arrayOfBranchNode
Concrete Type v1.0BranchNode is the common representation of if, range, and with.
-
arrayOfBreakNode
Concrete Type v1.0BreakNode represents a {{break}} action.
-
arrayOfChainNode
Concrete Type v1.0ChainNode holds a term followed by a chain of field accesses (identifier starting with '.').
The names may be chained ('.x.y').
The periods are dropped from each ident.
-
arrayOfCommandNode
Concrete Type v1.0CommandNode holds a command (a pipeline inside an evaluating action).
-
arrayOfCommentNode
Concrete Type v1.0CommentNode holds a comment.
-
arrayOfContinueNode
Concrete Type v1.0ContinueNode represents a {{continue}} action.
-
arrayOfDotNode
Concrete Type v1.0DotNode holds the special identifier '.'.
-
arrayOfFieldNode
Concrete Type v1.0FieldNode holds a field (identifier starting with '.').
The names may be chained ('.x.y').
The period is dropped from each ident.
-
arrayOfIdentifierNode
Concrete Type v1.0IdentifierNode holds an identifier.
-
arrayOfIfNode
Concrete Type v1.0IfNode represents an {{if}} action and its commands.
-
arrayOfListNode
Concrete Type v1.0ListNode holds a sequence of nodes.
-
arrayOfMode
Concrete Type v1.0A mode value is a set of flags (or 0). Modes control parser behavior.
-
arrayOfNilNode
Concrete Type v1.0NilNode holds the special identifier 'nil' representing an untyped nil constant.
-
arrayOfNode
Concrete Type v1.0A Node is an element in the parse tree. The interface is trivial.
The interface contains an unexported method so that only
types local to this package can satisfy it.
-
arrayOfNodeType
Concrete Type v1.0NodeType identifies the type of a parse tree node.
-
arrayOfNumberNode
Concrete Type v1.0NumberNode holds a number: signed or unsigned integer, float, or complex.
The value is parsed and stored under all the types that can represent the value.
This simulates in a small amount of code the behavior of Go's ideal constants.
-
arrayOfPipeNode
Concrete Type v1.0PipeNode holds a pipeline with optional declaration
-
arrayOfPos
Concrete Type v1.0Pos represents a byte position in the original input text from which
this template was parsed.
-
arrayOfRangeNode
Concrete Type v1.0RangeNode represents a {{range}} action and its commands.
-
arrayOfStringNode
Concrete Type v1.0StringNode holds a string constant. The value has been "unquoted".
-
arrayOfTemplateNode
Concrete Type v1.0TemplateNode represents a {{template}} action.
-
arrayOfTextNode
Concrete Type v1.0TextNode holds plain text.
-
arrayOfTree
Concrete Type v1.0Tree is the representation of a single parsed template.
-
arrayOfVariableNode
Concrete Type v1.0VariableNode holds a list of variable names, possibly with chained field
accesses. The dollar sign is part of the (first) name.
-
arrayOfWithNode
Concrete Type v1.0WithNode represents a {{with}} action and its commands.