version: 1.10
package parse
import "text/template/parse"
Overview
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
- func IsEmptyTree(n Node) bool
- func Parse(name, text, leftDelim, rightDelim string, funcs …map[string]interface{}) (map[string]*Tree, error)
- type ActionNode
- type BoolNode
- type BranchNode
- type ChainNode
- type CommandNode
- type DotNode
- type FieldNode
- type IdentifierNode
- type IfNode
- type ListNode
- type NilNode
- type Node
- type NodeType
- type NumberNode
- type PipeNode
- type Pos
- type RangeNode
- type StringNode
- type TemplateNode
- type TextNode
- type Tree
- type VariableNode
- type WithNode
Package files
func IsEmptyTree
¶
IsEmptyTree reports whether this tree (node) is empty of everything but space.
func Parse
¶
Parse returns a map from template name to parse.Tree, created by parsing the
templates described in the argument string. The top-level template will be given
the specified name. If an error is encountered, parsing stops and an empty map
is returned with the error.
type ActionNode
¶
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) Copy
¶
- func (a *ActionNode) Copy() Node
func (*ActionNode) String
¶
- func (a *ActionNode) String() string
type BoolNode
¶
BoolNode holds a boolean constant.
func (*BoolNode) Copy
¶
func (*BoolNode) String
¶
type BranchNode
¶
- type BranchNode struct {
- NodeType
- Pos
- Line int // The line number in the input. Deprecated: Kept for compatibility.
- Pipe *PipeNode // The pipeline to be evaluated.
- List *ListNode // What to execute if the value is non-empty.
- ElseList *ListNode // 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) Copy
¶
- func (b *BranchNode) Copy() Node
func (*BranchNode) String
¶
- func (b *BranchNode) String() string
type ChainNode
¶
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 (*ChainNode) Add
¶
Add adds the named field (which should start with a period) to the end of the
chain.
func (*ChainNode) Copy
¶
func (*ChainNode) String
¶
type CommandNode
¶
CommandNode holds a command (a pipeline inside an evaluating action).
func (*CommandNode) Copy
¶
- func (c *CommandNode) Copy() Node
func (*CommandNode) String
¶
- func (c *CommandNode) String() string
type DotNode
¶
DotNode holds the special identifier ‘.’.
func (*DotNode) Copy
¶
func (*DotNode) String
¶
func (*DotNode) Type
¶
type FieldNode
¶
FieldNode holds a field (identifier starting with ‘.’). The names may be chained
(‘.x.y’). The period is dropped from each ident.
func (*FieldNode) Copy
¶
func (*FieldNode) String
¶
type IdentifierNode
¶
IdentifierNode holds an identifier.
func NewIdentifier
¶
- func NewIdentifier(ident string) *IdentifierNode
NewIdentifier returns a new IdentifierNode with the given identifier name.
func (*IdentifierNode) Copy
¶
- func (i *IdentifierNode) Copy() Node
func (*IdentifierNode) SetPos
¶
- func (i *IdentifierNode) SetPos(pos Pos) *IdentifierNode
SetPos sets the position. NewIdentifier is a public method so we can’t modify
its signature. Chained for convenience. TODO: fix one day?
func (*IdentifierNode) SetTree
¶
- func (i *IdentifierNode) SetTree(t *Tree) *IdentifierNode
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?
func (*IdentifierNode) String
¶
- func (i *IdentifierNode) String() string
type IfNode
¶
- type IfNode struct {
- BranchNode
- }
IfNode represents an {{if}} action and its commands.
func (*IfNode) Copy
¶
type ListNode
¶
ListNode holds a sequence of nodes.
func (*ListNode) Copy
¶
func (*ListNode) CopyList
¶
func (*ListNode) String
¶
type NilNode
¶
NilNode holds the special identifier ‘nil’ representing an untyped nil constant.
func (*NilNode) Copy
¶
func (*NilNode) String
¶
func (*NilNode) Type
¶
type Node
¶
- type Node interface {
- Type() NodeType
- String() string
- // Copy does a deep copy of the Node and all its components.
- // To avoid type assertions, some XxxNodes also have specialized
- // CopyXxx methods that return *XxxNode.
- Copy() Node
- Position() Pos // byte position of start of node in full original input string
- // contains filtered or unexported methods
- }
A 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.
type NodeType
¶
- type NodeType int
NodeType identifies the type of a parse tree node.
- const (
- NodeText NodeType = iota // Plain text.
- NodeAction // A non-control action such as a field evaluation.
- NodeBool // A boolean constant.
- NodeChain // A sequence of field accesses.
- NodeCommand // An element of a pipeline.
- NodeDot // The cursor, dot.
- NodeField // A field or method name.
- NodeIdentifier // An identifier; always a function name.
- NodeIf // An if action.
- NodeList // A list of Nodes.
- NodeNil // An untyped nil constant.
- NodeNumber // A numerical constant.
- NodePipe // A pipeline of commands.
- NodeRange // A range action.
- NodeString // A string constant.
- NodeTemplate // A template invocation action.
- NodeVariable // A $ variable.
- NodeWith // A with action.
- )
func (NodeType) Type
¶
Type returns itself and provides an easy default implementation for embedding in
a Node. Embedded in all non-trivial Nodes.
type NumberNode
¶
- type NumberNode struct {
- NodeType
- Pos
- 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.
- // contains filtered or unexported fields
- }
NumberNode 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 (*NumberNode) Copy
¶
- func (n *NumberNode) Copy() Node
func (*NumberNode) String
¶
- func (n *NumberNode) String() string
type PipeNode
¶
- type PipeNode struct {
- NodeType
- Pos
- Line int // The line number in the input. Deprecated: Kept for compatibility.
- Decl []*VariableNode // Variable declarations in lexical order.
- Cmds []*CommandNode // The commands in lexical order.
- // contains filtered or unexported fields
- }
PipeNode holds a pipeline with optional declaration
func (*PipeNode) Copy
¶
func (*PipeNode) CopyPipe
¶
func (*PipeNode) String
¶
type Pos
¶
- type Pos int
Pos represents a byte position in the original input text from which this
template was parsed.
func (Pos) Position
¶
type RangeNode
¶
- type RangeNode struct {
- BranchNode
- }
RangeNode represents a {{range}} action and its commands.
func (*RangeNode) Copy
¶
type StringNode
¶
StringNode holds a string constant. The value has been “unquoted”.
func (*StringNode) Copy
¶
- func (s *StringNode) Copy() Node
func (*StringNode) String
¶
- func (s *StringNode) String() string
type TemplateNode
¶
TemplateNode represents a {{template}} action.
func (*TemplateNode) Copy
¶
- func (t *TemplateNode) Copy() Node
func (*TemplateNode) String
¶
- func (t *TemplateNode) String() string
type TextNode
¶
TextNode holds plain text.
func (*TextNode) Copy
¶
func (*TextNode) String
¶
type Tree
¶
Tree is the representation of a single parsed template.
func New
¶
New allocates a new parse tree with the given name.
func (*Tree) Copy
¶
Copy returns a copy of the Tree. Any parsing state is discarded.
func (*Tree) ErrorContext
¶
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.
func (*Tree) Parse
¶
Parse parses the template definition string to construct a representation of the
template for execution. If either action delimiter string is empty, the default
(“{{“ or “}}”) is used. Embedded template definitions are added to the treeSet
map.
type VariableNode
¶
VariableNode holds a list of variable names, possibly with chained field
accesses. The dollar sign is part of the (first) name.
func (*VariableNode) Copy
¶
- func (v *VariableNode) Copy() Node
func (*VariableNode) String
¶
- func (v *VariableNode) String() string
type WithNode
¶
- type WithNode struct {
- BranchNode
- }
WithNode represents a {{with}} action and its commands.