From 72c999ecbf4d4109e87288c22382f35f037afeb1 Mon Sep 17 00:00:00 2001 From: Thomas Pelletier Date: Sun, 28 Mar 2021 00:04:25 -0400 Subject: [PATCH] Fix trailing commas in arrays --- parser.go | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/parser.go b/parser.go index 8434fb9..6e5b36c 100644 --- a/parser.go +++ b/parser.go @@ -380,6 +380,11 @@ func (p *parser) parseValArray(b []byte) (ast.Reference, []byte, error) { } } + // TOML allows trailing commas in arrays. + if len(b) > 0 && b[0] == ']' { + break + } + var valueRef ast.Reference valueRef, b, err = p.parseVal(b) if err != nil { @@ -406,18 +411,25 @@ func (p *parser) parseValArray(b []byte) (ast.Reference, []byte, error) { } func (p *parser) parseOptionalWhitespaceCommentNewline(b []byte) ([]byte, error) { - var err error - b = p.parseWhitespace(b) - if len(b) > 0 && b[0] == '#' { - _, b, err = scanComment(b) - if err != nil { - return nil, err + for len(b) > 0 { + var err error + b = p.parseWhitespace(b) + if len(b) > 0 && b[0] == '#' { + _, b, err = scanComment(b) + if err != nil { + return nil, err + } } - } - if len(b) > 0 && (b[0] == '\n' || b[0] == '\r') { - b, err = p.parseNewline(b) - if err != nil { - return nil, err + if len(b) == 0 { + break + } + if b[0] == '\n' || b[0] == '\r' { + b, err = p.parseNewline(b) + if err != nil { + return nil, err + } + } else { + break } } return b, nil