31 lines
760 B
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")
|
|
}
|
|
}
|