Documentation ¶
Index ¶
- Variables
- func Dump(w io.Writer, n Node) error
- func DumpTemplate(w io.Writer, n TemplateNode) error
- func Merge(dst Node, src Node) error
- func Walk(v Visitor, node Node)
- func WalkTemplate(v TemplateVisitor, node TemplateNode)
- type ActionNode
- type AliasNode
- type AnchorNode
- type ArrayNode
- type ArrayNodeIter
- type BaseNode
- type BoolNode
- type BranchNode
- type ChainNode
- type CommandNode
- type CommentNode
- type DirectiveNode
- type DocumentNode
- type DotNode
- type ErrInvalidMergeType
- type FieldNode
- type File
- type FloatNode
- type IdentifierNode
- type IfNode
- type InfinityNode
- type IntegerNode
- type LiteralNode
- type MapNode
- type MapNodeIter
- type MappingKeyNode
- type MappingNode
- func (n *MappingNode) AddColumn(col int)
- func (n *MappingNode) GetToken() *token.Token
- func (n *MappingNode) MapRange() *MapNodeIter
- func (n *MappingNode) Merge(target *MappingNode)
- func (n *MappingNode) Read(p []byte) (int, error)
- func (n *MappingNode) SetIsFlowStyle(isFlow bool)
- func (n *MappingNode) String() string
- func (n *MappingNode) Type() NodeType
- type MappingValueNode
- func (n *MappingValueNode) AddColumn(col int)
- func (n *MappingValueNode) GetToken() *token.Token
- func (n *MappingValueNode) MapRange() *MapNodeIter
- func (n *MappingValueNode) Read(p []byte) (int, error)
- func (n *MappingValueNode) Replace(value Node) error
- func (n *MappingValueNode) SetIsFlowStyle(isFlow bool)
- func (n *MappingValueNode) String() string
- func (n *MappingValueNode) Type() NodeType
- type MergeKeyNode
- type NanNode
- type NilNode
- type Node
- type NodeList
- type NodeType
- type NullNode
- type PipeNode
- type RangeNode
- type ScalarNode
- type SequenceNode
- func (n *SequenceNode) AddColumn(col int)
- func (n *SequenceNode) ArrayRange() *ArrayNodeIter
- func (n *SequenceNode) GetToken() *token.Token
- func (n *SequenceNode) Merge(target *SequenceNode)
- func (n *SequenceNode) Read(p []byte) (int, error)
- func (n *SequenceNode) Replace(idx int, value Node) error
- func (n *SequenceNode) SetIsFlowStyle(isFlow bool)
- func (n *SequenceNode) String() string
- func (n *SequenceNode) Type() NodeType
- type StringNode
- type TagNode
- type TemplateBoolNode
- type TemplateInvokeNode
- func (t *TemplateInvokeNode) AddColumn(col int)
- func (t *TemplateInvokeNode) GetToken() *token.Token
- func (t *TemplateInvokeNode) Read(p []byte) (int, error)
- func (t *TemplateInvokeNode) String() string
- func (t *TemplateInvokeNode) Type() NodeType
- func (t *TemplateInvokeNode) WriteTo(sb *strings.Builder)
- type TemplateNode
- type TemplateNodeType
- type TemplateNumberNode
- type TemplateStringNode
- type TemplateVisitor
- type VariableNode
- type Visitor
- type WithNode
Constants ¶
This section is empty.
Variables ¶
Functions ¶
func DumpTemplate ¶
func DumpTemplate(w io.Writer, n TemplateNode) error
DumpTemplate prints a textual representation of the tree rooted at n to the given writer.
func Walk ¶
Walk traverses an AST in depth-first order: It starts by calling v.Visit(node); node must not be nil. If the visitor w returned by v.Visit(node) is not nil, Walk is invoked recursively with visitor w for each of the non-nil children of node, followed by a call of w.Visit(nil).
func WalkTemplate ¶
func WalkTemplate(v TemplateVisitor, node TemplateNode)
WalkTemplate traverses a template AST in depth-first order: It starts by calling v.VisitTemplate(node); node must not be nil. If the visitor w returned by v.VisitTemplate(node) is not nil, WalkTemplate is invoked recursively with visitor w for each of the non-nil children of node, followed by a call of w.VisitTemplate(nil).
Types ¶
type ActionNode ¶
type ActionNode struct { *BaseNode Token *token.Token Pipe *PipeNode // The pipeline in the action. }
ActionNode holds an action (something bounded by delimiters). Control actions have their own nodes; ActionNode represents simple ones such as field evaluations and parenthesized pipelines.
func (*ActionNode) AddColumn ¶
func (a *ActionNode) AddColumn(col int)
AddColumn add column number to child nodes recursively
func (*ActionNode) GetToken ¶
func (a *ActionNode) GetToken() *token.Token
GetToken returns token instance
func (*ActionNode) String ¶
func (a *ActionNode) String() string
func (*ActionNode) Type ¶
func (a *ActionNode) Type() NodeType
func (*ActionNode) WriteTo ¶
func (a *ActionNode) WriteTo(sb *strings.Builder)
type AliasNode ¶
AliasNode type of alias node
type AnchorNode ¶
AnchorNode type of anchor node
func Anchor ¶
func Anchor(tk *token.Token) *AnchorNode
func (*AnchorNode) AddColumn ¶
func (n *AnchorNode) AddColumn(col int)
AddColumn add column number to child nodes recursively
func (*AnchorNode) GetToken ¶
func (n *AnchorNode) GetToken() *token.Token
GetToken returns token instance
func (*AnchorNode) Read ¶
func (n *AnchorNode) Read(p []byte) (int, error)
Read implements (io.Reader).Read
func (*AnchorNode) SetName ¶
func (n *AnchorNode) SetName(name string) error
type ArrayNode ¶
type ArrayNode interface {
ArrayRange() *ArrayNodeIter
}
ArrayNode interface of SequenceNode
type ArrayNodeIter ¶
type ArrayNodeIter struct {
// contains filtered or unexported fields
}
ArrayNodeIter is an iterator for ranging over a ArrayNode
func (*ArrayNodeIter) Next ¶
func (m *ArrayNodeIter) Next() bool
Next advances the array iterator and reports whether there is another entry. It returns false when the iterator is exhausted.
func (*ArrayNodeIter) Value ¶
func (m *ArrayNodeIter) Value() Node
Value returns the value of the iterator's current array entry.
type BaseNode ¶
func (*BaseNode) GetComment ¶
GetComment returns comment token instance
type BoolNode ¶
BoolNode type of boolean node
func (*BoolNode) GetValue ¶
func (n *BoolNode) GetValue() interface{}
GetValue returns boolean value
type BranchNode ¶
type BranchNode struct { *BaseNode Token *token.Token Pipe *PipeNode // The pipeline to be evaluated. List *NodeList // What to execute if the value is non-empty. ElseList *NodeList // What to execute if the value is empty (nil if absent). // contains filtered or unexported fields }
BranchNode is the common representation of if, range, and with.
func (*BranchNode) AddColumn ¶
func (b *BranchNode) AddColumn(col int)
AddColumn add column number to child nodes recursively
func (*BranchNode) GetToken ¶
func (b *BranchNode) GetToken() *token.Token
GetToken returns token instance
func (*BranchNode) String ¶
func (b *BranchNode) String() string
func (*BranchNode) Type ¶
func (b *BranchNode) Type() NodeType
func (*BranchNode) WriteTo ¶
func (b *BranchNode) WriteTo(sb *strings.Builder)
type ChainNode ¶
type ChainNode struct { Node TemplateNode Field []string // The identifiers in lexical order. }
ChainNode 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.
func Chain ¶
func Chain(node TemplateNode) *ChainNode
func (*ChainNode) Add ¶
Add adds the named field (which should start with a period) to the end of the chain.
func (*ChainNode) Type ¶
func (l *ChainNode) Type() TemplateNodeType
type CommandNode ¶
type CommandNode struct {
Args []TemplateNode // Arguments in lexical order: Identifier, field, or constant.
}
CommandNode holds a command (a pipeline inside an evaluating action).
func Command ¶
func Command(args ...TemplateNode) *CommandNode
func (*CommandNode) Append ¶
func (c *CommandNode) Append(arg TemplateNode)
func (*CommandNode) String ¶
func (c *CommandNode) String() string
func (*CommandNode) Type ¶
func (l *CommandNode) Type() TemplateNodeType
func (*CommandNode) WriteTo ¶
func (c *CommandNode) WriteTo(sb *strings.Builder)
type CommentNode ¶
type CommentNode struct {
*BaseNode
}
CommentNode type of comment node
func (*CommentNode) AddColumn ¶
func (n *CommentNode) AddColumn(col int)
AddColumn add column number to child nodes recursively
func (*CommentNode) GetToken ¶
func (n *CommentNode) GetToken() *token.Token
GetToken returns token instance
type DirectiveNode ¶
DirectiveNode type of directive node
func Directive ¶
func Directive(tk *token.Token) *DirectiveNode
func (*DirectiveNode) AddColumn ¶
func (n *DirectiveNode) AddColumn(col int)
AddColumn add column number to child nodes recursively
func (*DirectiveNode) GetToken ¶
func (n *DirectiveNode) GetToken() *token.Token
GetToken returns token instance
type DocumentNode ¶
type DocumentNode struct { *BaseNode Start *token.Token // position of DocumentHeader ( `---` ) End *token.Token // position of DocumentEnd ( `...` ) Body Node }
DocumentNode type of Document
func (*DocumentNode) AddColumn ¶
func (d *DocumentNode) AddColumn(col int)
AddColumn add column number to child nodes recursively
func (*DocumentNode) GetToken ¶
func (d *DocumentNode) GetToken() *token.Token
GetToken returns token instance
type DotNode ¶
type DotNode struct { }
DotNode holds the special identifier '.'.
func (*DotNode) Type ¶
func (d *DotNode) Type() TemplateNodeType
type ErrInvalidMergeType ¶
type ErrInvalidMergeType struct {
// contains filtered or unexported fields
}
func (*ErrInvalidMergeType) Error ¶
func (e *ErrInvalidMergeType) Error() string
type FieldNode ¶
type FieldNode struct {
Ident []string // The identifiers in lexical order.
}
FieldNode holds a field (identifier starting with '.'). The names may be chained ('.x.y'). The period is dropped from each ident.
func (*FieldNode) Type ¶
func (l *FieldNode) Type() TemplateNodeType
type File ¶
type File struct { Name string Docs []*DocumentNode }
File contains all documents in YAML file
type FloatNode ¶
FloatNode type of float node
func (*FloatNode) GetValue ¶
func (n *FloatNode) GetValue() interface{}
GetValue returns float64 value
type IdentifierNode ¶
type IdentifierNode struct {
Ident string // The identifier's name.
}
IdentifierNode holds an identifier.
func Identifier ¶
func Identifier(ident string) *IdentifierNode
func (*IdentifierNode) String ¶
func (i *IdentifierNode) String() string
func (*IdentifierNode) Type ¶
func (l *IdentifierNode) Type() TemplateNodeType
func (*IdentifierNode) WriteTo ¶
func (i *IdentifierNode) WriteTo(sb *strings.Builder)
type IfNode ¶
type IfNode struct {
BranchNode
}
IfNode represents an {{if}} action and its commands.
type InfinityNode ¶
InfinityNode type of infinity node
func Infinity ¶
func Infinity(tk *token.Token) *InfinityNode
Infinity create node for .inf or -.inf value
func (*InfinityNode) AddColumn ¶
func (n *InfinityNode) AddColumn(col int)
AddColumn add column number to child nodes recursively
func (*InfinityNode) GetToken ¶
func (n *InfinityNode) GetToken() *token.Token
GetToken returns token instance
func (*InfinityNode) GetValue ¶
func (n *InfinityNode) GetValue() interface{}
GetValue returns math.Inf(0) or math.Inf(-1)
type IntegerNode ¶
IntegerNode type of integer node
func (*IntegerNode) AddColumn ¶
func (n *IntegerNode) AddColumn(col int)
AddColumn add column number to child nodes recursively
func (*IntegerNode) GetToken ¶
func (n *IntegerNode) GetToken() *token.Token
GetToken returns token instance
func (*IntegerNode) GetValue ¶
func (n *IntegerNode) GetValue() interface{}
GetValue returns int64 value
type LiteralNode ¶
type LiteralNode struct { *BaseNode Start *token.Token Value *StringNode }
LiteralNode type of literal node
func Literal ¶
func Literal(tk *token.Token) *LiteralNode
func (*LiteralNode) AddColumn ¶
func (n *LiteralNode) AddColumn(col int)
AddColumn add column number to child nodes recursively
func (*LiteralNode) GetToken ¶
func (n *LiteralNode) GetToken() *token.Token
GetToken returns token instance
func (*LiteralNode) GetValue ¶
func (n *LiteralNode) GetValue() interface{}
GetValue returns string value
type MapNode ¶
type MapNode interface {
MapRange() *MapNodeIter
}
MapNode interface of MappingValueNode / MappingNode
type MapNodeIter ¶
type MapNodeIter struct {
// contains filtered or unexported fields
}
MapNodeIter is an iterator for ranging over a MapNode
func (*MapNodeIter) Key ¶
func (m *MapNodeIter) Key() Node
Key returns the key of the iterator's current map node entry.
func (*MapNodeIter) Next ¶
func (m *MapNodeIter) Next() bool
Next advances the map iterator and reports whether there is another entry. It returns false when the iterator is exhausted.
func (*MapNodeIter) Value ¶
func (m *MapNodeIter) Value() Node
Value returns the value of the iterator's current map node entry.
type MappingKeyNode ¶
MappingKeyNode type of tag node
func MappingKey ¶
func MappingKey(tk *token.Token) *MappingKeyNode
MappingKey create node for map key ( '?' ).
func (*MappingKeyNode) AddColumn ¶
func (n *MappingKeyNode) AddColumn(col int)
AddColumn add column number to child nodes recursively
func (*MappingKeyNode) GetToken ¶
func (n *MappingKeyNode) GetToken() *token.Token
GetToken returns token instance
type MappingNode ¶
type MappingNode struct { *BaseNode Start *token.Token End *token.Token IsFlowStyle bool Values []*MappingValueNode }
MappingNode type of mapping node
func Mapping ¶
func Mapping(tk *token.Token, isFlowStyle bool, values ...*MappingValueNode) *MappingNode
Mapping create node for map
func (*MappingNode) AddColumn ¶
func (n *MappingNode) AddColumn(col int)
AddColumn add column number to child nodes recursively
func (*MappingNode) GetToken ¶
func (n *MappingNode) GetToken() *token.Token
GetToken returns token instance
func (*MappingNode) MapRange ¶
func (n *MappingNode) MapRange() *MapNodeIter
MapRange implements MapNode protocol
func (*MappingNode) Merge ¶
func (n *MappingNode) Merge(target *MappingNode)
Merge merge key/value of map.
func (*MappingNode) Read ¶
func (n *MappingNode) Read(p []byte) (int, error)
Read implements (io.Reader).Read
func (*MappingNode) SetIsFlowStyle ¶
func (n *MappingNode) SetIsFlowStyle(isFlow bool)
SetIsFlowStyle set value to IsFlowStyle field recursively.
type MappingValueNode ¶
MappingValueNode type of mapping value
func MappingTemplate ¶
func MappingTemplate(tk *token.Token, template Node) *MappingValueNode
MappingTemplate creates a node for a mapping value that is a template
func MappingValue ¶
func MappingValue(tk *token.Token, key Node, value Node) *MappingValueNode
MappingValue create node for mapping value
func (*MappingValueNode) AddColumn ¶
func (n *MappingValueNode) AddColumn(col int)
AddColumn add column number to child nodes recursively
func (*MappingValueNode) GetToken ¶
func (n *MappingValueNode) GetToken() *token.Token
GetToken returns token instance
func (*MappingValueNode) MapRange ¶
func (n *MappingValueNode) MapRange() *MapNodeIter
MapRange implements MapNode protocol
func (*MappingValueNode) Read ¶
func (n *MappingValueNode) Read(p []byte) (int, error)
Read implements (io.Reader).Read
func (*MappingValueNode) Replace ¶
func (n *MappingValueNode) Replace(value Node) error
Replace replace value node.
func (*MappingValueNode) SetIsFlowStyle ¶
func (n *MappingValueNode) SetIsFlowStyle(isFlow bool)
SetIsFlowStyle set value to IsFlowStyle field recursively.
func (*MappingValueNode) String ¶
func (n *MappingValueNode) String() string
String mapping value to text
func (*MappingValueNode) Type ¶
func (n *MappingValueNode) Type() NodeType
Type returns MappingValueType
type MergeKeyNode ¶
MergeKeyNode type of merge key node
func MergeKey ¶
func MergeKey(tk *token.Token) *MergeKeyNode
MergeKey create node for merge key ( << )
func (*MergeKeyNode) AddColumn ¶
func (n *MergeKeyNode) AddColumn(col int)
AddColumn add column number to child nodes recursively
func (*MergeKeyNode) GetToken ¶
func (n *MergeKeyNode) GetToken() *token.Token
GetToken returns token instance
func (*MergeKeyNode) GetValue ¶
func (n *MergeKeyNode) GetValue() interface{}
GetValue returns '<<' value
type NanNode ¶
NanNode type of nan node
type NilNode ¶
type NilNode struct { }
NilNode holds the special identifier 'nil' representing an untyped nil constant.
func (*NilNode) Type ¶
func (n *NilNode) Type() TemplateNodeType
type Node ¶
type Node interface { io.Reader // String node to text String() string // GetToken returns token instance GetToken() *token.Token // Type returns type of node Type() NodeType // AddColumn add column number to child nodes recursively AddColumn(int) // SetComment set comment token to node SetComment(*token.Token) error // Comment returns comment token instance GetComment() *token.Token // contains filtered or unexported methods }
Node type of node
func FilterFile ¶
FilterFile returns a list of nodes that match the given type.
type NodeList ¶
type NodeList struct {
Nodes []Node // The element nodes in lexical order.
}
NodeList holds a sequence of nodes.
type NodeType ¶
type NodeType int
NodeType type identifier of node
const ( // UnknownNodeType type identifier for default UnknownNodeType NodeType = iota // DocumentType type identifier for document node DocumentType // NullType type identifier for null node NullType // BoolType type identifier for boolean node BoolType // IntegerType type identifier for integer node IntegerType // FloatType type identifier for float node FloatType // InfinityType type identifier for infinity node InfinityType // NanType type identifier for nan node NanType // StringType type identifier for string node StringType // MergeKeyType type identifier for merge key node MergeKeyType // LiteralType type identifier for literal node LiteralType // MappingType type identifier for mapping node MappingType // MappingKeyType type identifier for mapping key node MappingKeyType // MappingValueType type identifier for mapping value node MappingValueType // SequenceType type identifier for sequence node SequenceType // AnchorType type identifier for anchor node AnchorType // AliasType type identifier for alias node AliasType // DirectiveType type identifier for directive node DirectiveType // TagType type identifier for tag node TagType // CommentType type identifier for comment node CommentType // ActionType type identifier for action node ActionType // IfType type identifier for if node IfType // RangeType type identifier for range node RangeType // WithType type identifier for with node WithType // TemplateInvokeType type identifier for template invoke node TemplateInvokeType )
type NullNode ¶
type NullNode struct { *BaseNode Comment *token.Token // position of Comment ( `#comment` ) Token *token.Token }
NullNode type of null node
func (*NullNode) SetComment ¶
SetComment set comment token
type PipeNode ¶
type PipeNode struct { IsAssign bool // The variables are being assigned, not declared. Decl []*VariableNode // Variables in lexical order. Cmds []*CommandNode // The commands in lexical order. }
PipeNode holds a pipeline with optional declaration
func (*PipeNode) Append ¶
func (p *PipeNode) Append(command *CommandNode)
func (*PipeNode) Type ¶
func (l *PipeNode) Type() TemplateNodeType
type RangeNode ¶
type RangeNode struct {
BranchNode
}
RangeNode represents a {{range}} action and its commands.
type ScalarNode ¶
type ScalarNode interface { Node GetValue() interface{} }
ScalarNode type for scalar node
type SequenceNode ¶
type SequenceNode struct { *BaseNode Start *token.Token End *token.Token IsFlowStyle bool Values []Node }
SequenceNode type of sequence node
func Sequence ¶
func Sequence(tk *token.Token, isFlowStyle bool) *SequenceNode
Sequence create node for sequence
func (*SequenceNode) AddColumn ¶
func (n *SequenceNode) AddColumn(col int)
AddColumn add column number to child nodes recursively
func (*SequenceNode) ArrayRange ¶
func (n *SequenceNode) ArrayRange() *ArrayNodeIter
ArrayRange implements ArrayNode protocol
func (*SequenceNode) GetToken ¶
func (n *SequenceNode) GetToken() *token.Token
GetToken returns token instance
func (*SequenceNode) Merge ¶
func (n *SequenceNode) Merge(target *SequenceNode)
Merge merge sequence value.
func (*SequenceNode) Read ¶
func (n *SequenceNode) Read(p []byte) (int, error)
Read implements (io.Reader).Read
func (*SequenceNode) Replace ¶
func (n *SequenceNode) Replace(idx int, value Node) error
Replace replace value node.
func (*SequenceNode) SetIsFlowStyle ¶
func (n *SequenceNode) SetIsFlowStyle(isFlow bool)
SetIsFlowStyle set value to IsFlowStyle field recursively.
type StringNode ¶
StringNode type of string node
func (*StringNode) AddColumn ¶
func (n *StringNode) AddColumn(col int)
AddColumn add column number to child nodes recursively
func (*StringNode) GetToken ¶
func (n *StringNode) GetToken() *token.Token
GetToken returns token instance
func (*StringNode) GetValue ¶
func (n *StringNode) GetValue() interface{}
GetValue returns string value
func (*StringNode) Read ¶
func (n *StringNode) Read(p []byte) (int, error)
Read implements (io.Reader).Read
func (*StringNode) String ¶
func (n *StringNode) String() string
String string value to text with quote or literal header if required
type TagNode ¶
TagNode type of tag node
type TemplateBoolNode ¶
type TemplateBoolNode struct {
True bool // The value of the boolean constant.
}
TemplateBoolNode holds a boolean constant.
func TemplateBool ¶
func TemplateBool(true bool) *TemplateBoolNode
func (*TemplateBoolNode) String ¶
func (b *TemplateBoolNode) String() string
func (*TemplateBoolNode) Type ¶
func (l *TemplateBoolNode) Type() TemplateNodeType
func (*TemplateBoolNode) WriteTo ¶
func (b *TemplateBoolNode) WriteTo(sb *strings.Builder)
type TemplateInvokeNode ¶
type TemplateInvokeNode struct { *BaseNode Token *token.Token Name string // The name of the template (unquoted). Pipe *PipeNode // The command to evaluate as dot for the template. }
TemplateInvokeNode represents a {{template}} action.
func TemplateInvoke ¶
func TemplateInvoke(tk *token.Token, name string, pipe *PipeNode) *TemplateInvokeNode
func (*TemplateInvokeNode) AddColumn ¶
func (t *TemplateInvokeNode) AddColumn(col int)
AddColumn add column number to child nodes recursively
func (*TemplateInvokeNode) GetToken ¶
func (t *TemplateInvokeNode) GetToken() *token.Token
GetToken returns token instance
func (*TemplateInvokeNode) String ¶
func (t *TemplateInvokeNode) String() string
func (*TemplateInvokeNode) Type ¶
func (t *TemplateInvokeNode) Type() NodeType
func (*TemplateInvokeNode) WriteTo ¶
func (t *TemplateInvokeNode) WriteTo(sb *strings.Builder)
type TemplateNode ¶
type TemplateNode interface { Type() TemplateNodeType String() string WriteTo(*strings.Builder) }
type TemplateNodeType ¶
type TemplateNodeType int
TemplateNodeType identifies the type of a template tree node.
const ( TemplateNodeBool TemplateNodeType = iota // A boolean constant. TemplateNodeChain // A sequence of field accesses. TemplateNodeCommand // An element of a pipeline. TemplateNodeDot // The cursor, dot. TemplateNodeField // A field or method name. TemplateNodeIdentifier // An identifier; always a function name. TemplateNodeNil // An untyped nil constant. TemplateNodeNumber // A numerical constant. TemplateNodePipe // A pipeline of commands. TemplateNodeString // A string constant. TemplateNodeVariable // A $ variable. )
func (TemplateNodeType) String ¶
func (t TemplateNodeType) String() string
String template node type identifier to text
type TemplateNumberNode ¶
type TemplateNumberNode struct { IsInt bool // Number has an integral value. IsUint bool // Number has an unsigned integral value. IsFloat bool // Number has a floating-point value. IsComplex bool // Number is complex. Int64 int64 // The signed integer value. Uint64 uint64 // The unsigned integer value. Float64 float64 // The floating-point value. Complex128 complex128 // The complex value. Text string // The original textual representation from the input. }
TemplateNumberNode 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.
func TemplateNumber ¶
func TemplateNumber(text string) (*TemplateNumberNode, error)
func (*TemplateNumberNode) String ¶
func (n *TemplateNumberNode) String() string
func (*TemplateNumberNode) Type ¶
func (l *TemplateNumberNode) Type() TemplateNodeType
func (*TemplateNumberNode) WriteTo ¶
func (n *TemplateNumberNode) WriteTo(sb *strings.Builder)
type TemplateStringNode ¶
type TemplateStringNode struct { Quoted string // The original text of the string, with quotes. Text string // The string, after quote processing. }
TemplateStringNode holds a string constant. The value has been "unquoted".
func TemplateString ¶
func TemplateString(orig, text string) *TemplateStringNode
func (*TemplateStringNode) String ¶
func (s *TemplateStringNode) String() string
func (*TemplateStringNode) Type ¶
func (l *TemplateStringNode) Type() TemplateNodeType
func (*TemplateStringNode) WriteTo ¶
func (s *TemplateStringNode) WriteTo(sb *strings.Builder)
type TemplateVisitor ¶
type TemplateVisitor interface {
VisitTemplate(TemplateNode) TemplateVisitor
}
TemplateVisitor has Visit method that is invokded for each node encountered by WalkTemplate. If the result visitor w is not nil, Walk visits each of the children of node with the visitor w, followed by a call of w.Visit(nil).
type VariableNode ¶
type VariableNode struct {
Ident []string // Variable name and fields in lexical order.
}
VariableNode holds a list of variable names, possibly with chained field accesses. The dollar sign is part of the (first) name.
func Variable ¶
func Variable(ident string) *VariableNode
func (*VariableNode) String ¶
func (v *VariableNode) String() string
func (*VariableNode) Type ¶
func (l *VariableNode) Type() TemplateNodeType
func (*VariableNode) WriteTo ¶
func (v *VariableNode) WriteTo(sb *strings.Builder)