mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-12-29 10:36:31 +00:00
b966d3b157
Bumps [github.com/gin-gonic/gin](https://github.com/gin-gonic/gin) from 1.8.1 to 1.8.2. - [Release notes](https://github.com/gin-gonic/gin/releases) - [Changelog](https://github.com/gin-gonic/gin/blob/master/CHANGELOG.md) - [Commits](https://github.com/gin-gonic/gin/compare/v1.8.1...v1.8.2) --- updated-dependencies: - dependency-name: github.com/gin-gonic/gin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
49 lines
1,002 B
Go
49 lines
1,002 B
Go
package tracker
|
|
|
|
import "github.com/pelletier/go-toml/v2/unstable"
|
|
|
|
// KeyTracker is a tracker that keeps track of the current Key as the AST is
|
|
// walked.
|
|
type KeyTracker struct {
|
|
k []string
|
|
}
|
|
|
|
// UpdateTable sets the state of the tracker with the AST table node.
|
|
func (t *KeyTracker) UpdateTable(node *unstable.Node) {
|
|
t.reset()
|
|
t.Push(node)
|
|
}
|
|
|
|
// UpdateArrayTable sets the state of the tracker with the AST array table node.
|
|
func (t *KeyTracker) UpdateArrayTable(node *unstable.Node) {
|
|
t.reset()
|
|
t.Push(node)
|
|
}
|
|
|
|
// Push the given key on the stack.
|
|
func (t *KeyTracker) Push(node *unstable.Node) {
|
|
it := node.Key()
|
|
for it.Next() {
|
|
t.k = append(t.k, string(it.Node().Data))
|
|
}
|
|
}
|
|
|
|
// Pop key from stack.
|
|
func (t *KeyTracker) Pop(node *unstable.Node) {
|
|
it := node.Key()
|
|
for it.Next() {
|
|
t.k = t.k[:len(t.k)-1]
|
|
}
|
|
}
|
|
|
|
// Key returns the current key
|
|
func (t *KeyTracker) Key() []string {
|
|
k := make([]string, len(t.k))
|
|
copy(k, t.k)
|
|
return k
|
|
}
|
|
|
|
func (t *KeyTracker) reset() {
|
|
t.k = t.k[:0]
|
|
}
|