4
"github.com/pelletier/go-toml/v2/internal/danger"
5
"github.com/pelletier/go-toml/v2/internal/tracker"
6
"github.com/pelletier/go-toml/v2/unstable"
12
// Tracks the current key being processed.
13
key tracker.KeyTracker
15
missing []unstable.ParserError
18
func (s *strict) EnterTable(node *unstable.Node) {
23
s.key.UpdateTable(node)
26
func (s *strict) EnterArrayTable(node *unstable.Node) {
31
s.key.UpdateArrayTable(node)
34
func (s *strict) EnterKeyValue(node *unstable.Node) {
42
func (s *strict) ExitKeyValue(node *unstable.Node) {
50
func (s *strict) MissingTable(node *unstable.Node) {
55
s.missing = append(s.missing, unstable.ParserError{
56
Highlight: keyLocation(node),
57
Message: "missing table",
62
func (s *strict) MissingField(node *unstable.Node) {
67
s.missing = append(s.missing, unstable.ParserError{
68
Highlight: keyLocation(node),
69
Message: "missing field",
74
func (s *strict) Error(doc []byte) error {
75
if !s.Enabled || len(s.missing) == 0 {
79
err := &StrictMissingError{
80
Errors: make([]DecodeError, 0, len(s.missing)),
83
for _, derr := range s.missing {
85
err.Errors = append(err.Errors, *wrapDecodeError(doc, &derr))
91
func keyLocation(node *unstable.Node) []byte {
96
panic("should not be called with empty key")
99
start := k.Node().Data
106
return danger.BytesRange(start, end)