go-toml/value.go

31 lines
760 B
Go

package toml
import (
"git.makaay.nl/mauricem/go-parsekit/parse"
)
// Values must be of the following types: String, Integer, Float, Boolean,
// Datetime, Array, or Inline Table. Unspecified values are invalid.
func (t *parser) startValue(p *parse.API) {
switch {
case p.Peek(c.Any(a.SingleQuote, a.DoubleQuote)):
p.Handle(t.startString)
case p.Peek(a.Runes('t', 'f')):
p.Handle(t.startBoolean)
case p.Peek(a.Plus.Or(a.Minus)):
p.Handle(t.startNumber)
case p.Peek(a.Runes('i', 'n')):
p.Handle(t.startNumber)
case p.Peek(a.Digit):
if p.Peek(a.Digits.Then(a.Minus.Or(a.Colon))) {
p.Handle(t.startDateTime)
} else {
p.Handle(t.startNumber)
}
case p.Peek(a.SquareOpen):
p.Handle(t.startArray)
default:
p.Expected("a value")
}
}