summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/pelletier/go-toml/v2/internal/ast
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/pelletier/go-toml/v2/internal/ast')
-rw-r--r--vendor/github.com/pelletier/go-toml/v2/internal/ast/ast.go144
-rw-r--r--vendor/github.com/pelletier/go-toml/v2/internal/ast/builder.go51
-rw-r--r--vendor/github.com/pelletier/go-toml/v2/internal/ast/kind.go69
3 files changed, 0 insertions, 264 deletions
diff --git a/vendor/github.com/pelletier/go-toml/v2/internal/ast/ast.go b/vendor/github.com/pelletier/go-toml/v2/internal/ast/ast.go
deleted file mode 100644
index 33c7f915..00000000
--- a/vendor/github.com/pelletier/go-toml/v2/internal/ast/ast.go
+++ /dev/null
@@ -1,144 +0,0 @@
-package ast
-
-import (
- "fmt"
- "unsafe"
-
- "github.com/pelletier/go-toml/v2/internal/danger"
-)
-
-// Iterator starts uninitialized, you need to call Next() first.
-//
-// For example:
-//
-// it := n.Children()
-// for it.Next() {
-// it.Node()
-// }
-type Iterator struct {
- started bool
- node *Node
-}
-
-// Next moves the iterator forward and returns true if points to a
-// node, false otherwise.
-func (c *Iterator) Next() bool {
- if !c.started {
- c.started = true
- } else if c.node.Valid() {
- c.node = c.node.Next()
- }
- return c.node.Valid()
-}
-
-// IsLast returns true if the current node of the iterator is the last
-// one. Subsequent call to Next() will return false.
-func (c *Iterator) IsLast() bool {
- return c.node.next == 0
-}
-
-// Node returns a copy of the node pointed at by the iterator.
-func (c *Iterator) Node() *Node {
- return c.node
-}
-
-// Root contains a full AST.
-//
-// It is immutable once constructed with Builder.
-type Root struct {
- nodes []Node
-}
-
-// Iterator over the top level nodes.
-func (r *Root) Iterator() Iterator {
- it := Iterator{}
- if len(r.nodes) > 0 {
- it.node = &r.nodes[0]
- }
- return it
-}
-
-func (r *Root) at(idx Reference) *Node {
- return &r.nodes[idx]
-}
-
-// Arrays have one child per element in the array. InlineTables have
-// one child per key-value pair in the table. KeyValues have at least
-// two children. The first one is the value. The rest make a
-// potentially dotted key. Table and Array table have one child per
-// element of the key they represent (same as KeyValue, but without
-// the last node being the value).
-type Node struct {
- Kind Kind
- Raw Range // Raw bytes from the input.
- Data []byte // Node value (either allocated or referencing the input).
-
- // References to other nodes, as offsets in the backing array
- // from this node. References can go backward, so those can be
- // negative.
- next int // 0 if last element
- child int // 0 if no child
-}
-
-type Range struct {
- Offset uint32
- Length uint32
-}
-
-// Next returns a copy of the next node, or an invalid Node if there
-// is no next node.
-func (n *Node) Next() *Node {
- if n.next == 0 {
- return nil
- }
- ptr := unsafe.Pointer(n)
- size := unsafe.Sizeof(Node{})
- return (*Node)(danger.Stride(ptr, size, n.next))
-}
-
-// Child returns a copy of the first child node of this node. Other
-// children can be accessed calling Next on the first child. Returns
-// an invalid Node if there is none.
-func (n *Node) Child() *Node {
- if n.child == 0 {
- return nil
- }
- ptr := unsafe.Pointer(n)
- size := unsafe.Sizeof(Node{})
- return (*Node)(danger.Stride(ptr, size, n.child))
-}
-
-// Valid returns true if the node's kind is set (not to Invalid).
-func (n *Node) Valid() bool {
- return n != nil
-}
-
-// Key returns the child nodes making the Key on a supported
-// node. Panics otherwise. They are guaranteed to be all be of the
-// Kind Key. A simple key would return just one element.
-func (n *Node) Key() Iterator {
- switch n.Kind {
- case KeyValue:
- value := n.Child()
- if !value.Valid() {
- panic(fmt.Errorf("KeyValue should have at least two children"))
- }
- return Iterator{node: value.Next()}
- case Table, ArrayTable:
- return Iterator{node: n.Child()}
- default:
- panic(fmt.Errorf("Key() is not supported on a %s", n.Kind))
- }
-}
-
-// Value returns a pointer to the value node of a KeyValue.
-// Guaranteed to be non-nil. Panics if not called on a KeyValue node,
-// or if the Children are malformed.
-func (n *Node) Value() *Node {
- return n.Child()
-}
-
-// Children returns an iterator over a node's children.
-func (n *Node) Children() Iterator {
- return Iterator{node: n.Child()}
-}
diff --git a/vendor/github.com/pelletier/go-toml/v2/internal/ast/builder.go b/vendor/github.com/pelletier/go-toml/v2/internal/ast/builder.go
deleted file mode 100644
index 120f16e5..00000000
--- a/vendor/github.com/pelletier/go-toml/v2/internal/ast/builder.go
+++ /dev/null
@@ -1,51 +0,0 @@
-package ast
-
-type Reference int
-
-const InvalidReference Reference = -1
-
-func (r Reference) Valid() bool {
- return r != InvalidReference
-}
-
-type Builder struct {
- tree Root
- lastIdx int
-}
-
-func (b *Builder) Tree() *Root {
- return &b.tree
-}
-
-func (b *Builder) NodeAt(ref Reference) *Node {
- return b.tree.at(ref)
-}
-
-func (b *Builder) Reset() {
- b.tree.nodes = b.tree.nodes[:0]
- b.lastIdx = 0
-}
-
-func (b *Builder) Push(n Node) Reference {
- b.lastIdx = len(b.tree.nodes)
- b.tree.nodes = append(b.tree.nodes, n)
- return Reference(b.lastIdx)
-}
-
-func (b *Builder) PushAndChain(n Node) Reference {
- newIdx := len(b.tree.nodes)
- b.tree.nodes = append(b.tree.nodes, n)
- if b.lastIdx >= 0 {
- b.tree.nodes[b.lastIdx].next = newIdx - b.lastIdx
- }
- b.lastIdx = newIdx
- return Reference(b.lastIdx)
-}
-
-func (b *Builder) AttachChild(parent Reference, child Reference) {
- b.tree.nodes[parent].child = int(child) - int(parent)
-}
-
-func (b *Builder) Chain(from Reference, to Reference) {
- b.tree.nodes[from].next = int(to) - int(from)
-}
diff --git a/vendor/github.com/pelletier/go-toml/v2/internal/ast/kind.go b/vendor/github.com/pelletier/go-toml/v2/internal/ast/kind.go
deleted file mode 100644
index 2b50c67f..00000000
--- a/vendor/github.com/pelletier/go-toml/v2/internal/ast/kind.go
+++ /dev/null
@@ -1,69 +0,0 @@
-package ast
-
-import "fmt"
-
-type Kind int
-
-const (
- // meta
- Invalid Kind = iota
- Comment
- Key
-
- // top level structures
- Table
- ArrayTable
- KeyValue
-
- // containers values
- Array
- InlineTable
-
- // values
- String
- Bool
- Float
- Integer
- LocalDate
- LocalTime
- LocalDateTime
- DateTime
-)
-
-func (k Kind) String() string {
- switch k {
- case Invalid:
- return "Invalid"
- case Comment:
- return "Comment"
- case Key:
- return "Key"
- case Table:
- return "Table"
- case ArrayTable:
- return "ArrayTable"
- case KeyValue:
- return "KeyValue"
- case Array:
- return "Array"
- case InlineTable:
- return "InlineTable"
- case String:
- return "String"
- case Bool:
- return "Bool"
- case Float:
- return "Float"
- case Integer:
- return "Integer"
- case LocalDate:
- return "LocalDate"
- case LocalTime:
- return "LocalTime"
- case LocalDateTime:
- return "LocalDateTime"
- case DateTime:
- return "DateTime"
- }
- panic(fmt.Errorf("Kind.String() not implemented for '%d'", k))
-}