You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
envsubst/parse/node.go

87 lines
1.4 KiB
Go

package parse
// Node is an element in the parse tree.
type Node interface {
node()
}
// empty string node
var empty = new(TextNode)
// a template is represented by a tree consisting of one
// or more of the following nodes.
type (
// TextNode represents a string of text.
TextNode struct {
Value string
}
// FuncNode represents a string function.
FuncNode struct {
Param string
Name string
Args []Node
}
// ListNode represents a list of nodes.
ListNode struct {
Nodes []Node
}
// ParamNode struct{
// Name string
// }
//
// CaseNode struct {
// Name string
// First bool
// }
//
// LowerNode struct {
// Name string
// First bool
// }
//
// SubstrNode struct {
// Name string
// Pos Node
// Len Node
// }
//
// ReplaceNode struct {
// Name string
// Substring Node
// Replacement Node
// }
//
// TrimNode struct{
//
// }
//
// DefaultNode struct {
// Name string
// Default Node
// }
)
// newTextNode returns a new TextNode.
func newTextNode(text string) *TextNode {
return &TextNode{Value: text}
}
// newListNode returns a new ListNode.
func newListNode(nodes ...Node) *ListNode {
return &ListNode{Nodes: nodes}
}
// newFuncNode returns a new FuncNode.
func newFuncNode(name string) *FuncNode {
return &FuncNode{Param: name}
}
// node() defines the node in a parse tree
func (*TextNode) node() {}
func (*ListNode) node() {}
func (*FuncNode) node() {}