summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/pelletier/go-toml/parser.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/pelletier/go-toml/parser.go')
-rw-r--r--vendor/github.com/pelletier/go-toml/parser.go30
1 files changed, 10 insertions, 20 deletions
diff --git a/vendor/github.com/pelletier/go-toml/parser.go b/vendor/github.com/pelletier/go-toml/parser.go
index 64eb0e587..8ee49cb56 100644
--- a/vendor/github.com/pelletier/go-toml/parser.go
+++ b/vendor/github.com/pelletier/go-toml/parser.go
@@ -13,9 +13,9 @@ import (
)
type tomlParser struct {
- flow chan token
+ flowIdx int
+ flow []token
tree *Tree
- tokensBuffer []token
currentTable []string
seenTableKeys []string
}
@@ -34,16 +34,10 @@ func (p *tomlParser) run() {
}
func (p *tomlParser) peek() *token {
- if len(p.tokensBuffer) != 0 {
- return &(p.tokensBuffer[0])
- }
-
- tok, ok := <-p.flow
- if !ok {
+ if p.flowIdx >= len(p.flow) {
return nil
}
- p.tokensBuffer = append(p.tokensBuffer, tok)
- return &tok
+ return &p.flow[p.flowIdx]
}
func (p *tomlParser) assume(typ tokenType) {
@@ -57,16 +51,12 @@ func (p *tomlParser) assume(typ tokenType) {
}
func (p *tomlParser) getToken() *token {
- if len(p.tokensBuffer) != 0 {
- tok := p.tokensBuffer[0]
- p.tokensBuffer = p.tokensBuffer[1:]
- return &tok
- }
- tok, ok := <-p.flow
- if !ok {
+ tok := p.peek()
+ if tok == nil {
return nil
}
- return &tok
+ p.flowIdx++
+ return tok
}
func (p *tomlParser) parseStart() tomlParserStateFn {
@@ -374,13 +364,13 @@ func (p *tomlParser) parseArray() interface{} {
return array
}
-func parseToml(flow chan token) *Tree {
+func parseToml(flow []token) *Tree {
result := newTree()
result.position = Position{1, 1}
parser := &tomlParser{
+ flowIdx: 0,
flow: flow,
tree: result,
- tokensBuffer: make([]token, 0),
currentTable: make([]string, 0),
seenTableKeys: make([]string, 0),
}