Documentation
¶
Overview ¶
Package ast declares the types used to represent syntax trees for HCL (HashiCorp Configuration Language)
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CommentGroup ¶
type CommentGroup struct {
List []*Comment // len(List) > 0
}
CommentGroup node represents a sequence of comments with no other tokens and no empty lines between.
func (*CommentGroup) Pos ¶
func (c *CommentGroup) Pos() token.Pos
type File ¶
type File struct {
Node Node // usually a *ObjectList
Comments []*CommentGroup // list of all comments in the source
}
File represents a single HCL file
type ListType ¶
type ListType struct {
Lbrack token.Pos // position of "["
Rbrack token.Pos // position of "]"
List []Node // the elements in lexical order
}
ListStatement represents a HCL List type
type LiteralType ¶
type LiteralType struct {
Token token.Token
// associated line comment, only when used in a list
LineComment *CommentGroup
}
LiteralType represents a literal of basic type. Valid types are: token.NUMBER, token.FLOAT, token.BOOL and token.STRING
func (*LiteralType) Pos ¶
func (l *LiteralType) Pos() token.Pos
type Node ¶
Node is an element in the abstract syntax tree.
type ObjectItem ¶
type ObjectItem struct {
// keys is only one length long if it's of type assignment. If it's a
// nested object it can be larger than one. In that case "assign" is
// invalid as there is no assignments for a nested object.
Keys []*ObjectKey
// assign contains the position of "=", if any
Assign token.Pos
// val is the item itself. It can be an object,list, number, bool or a
// string. If key length is larger than one, val can be only of type
// Object.
Val Node
LeadComment *CommentGroup // associated lead comment
LineComment *CommentGroup // associated line comment
}
ObjectItem represents a HCL Object Item. An item is represented with a key (or keys). It can be an assignment or an object (both normal and nested)
func (*ObjectItem) Pos ¶
func (o *ObjectItem) Pos() token.Pos
type ObjectList ¶
type ObjectList struct {
Items []*ObjectItem
}
ObjectList represents a list of ObjectItems. An HCL file itself is an ObjectList.
func (*ObjectList) Add ¶
func (o *ObjectList) Add(item *ObjectItem)
func (*ObjectList) Children ¶
func (o *ObjectList) Children() *ObjectList
Children returns further nested objects (key length > 0) within this ObjectList. This should be used with Filter to get at child items.
func (*ObjectList) Elem ¶
func (o *ObjectList) Elem() *ObjectList
Elem returns items in the list that are direct element assignments (key length == 0). This should be used with Filter to get at elements.
func (*ObjectList) Filter ¶
func (o *ObjectList) Filter(keys ...string) *ObjectList
Filter filters out the objects with the given key list as a prefix.
The returned list of objects contain ObjectItems where the keys have this prefix already stripped off. This might result in objects with zero-length key lists if they have no children.
If no matches are found, an empty ObjectList (non-nil) is returned.
func (*ObjectList) Pos ¶
func (o *ObjectList) Pos() token.Pos
type ObjectType ¶
type ObjectType struct {
Lbrace token.Pos // position of "{"
Rbrace token.Pos // position of "}"
List *ObjectList // the nodes in lexical order
}
ObjectType represents a HCL Object Type
func (*ObjectType) Pos ¶
func (o *ObjectType) Pos() token.Pos