From 159bed34c3a850d58d08a36ddc40372ed96af2db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Tue, 17 Apr 2018 10:20:16 +0200 Subject: [PATCH] parser: Add some context to front matter parse error Fixes #4638 --- parser/page.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/parser/page.go b/parser/page.go index 17378840d..84a59f186 100644 --- a/parser/page.go +++ b/parser/page.go @@ -308,7 +308,7 @@ func extractFrontMatterDelims(r *bufio.Reader, left, right []byte) (fm []byte, e // pre-reads beginning delimiter length - 1 bytes from Reader for i := 0; i < len(left)-1; i++ { if c, err = r.ReadByte(); err != nil { - return nil, fmt.Errorf("unable to read frontmatter at filepos %d: %s", buf.Len(), err) + return nil, fmt.Errorf("unable to read frontmatter at filepos %d: %s\n%.100s...", buf.Len(), err, buf.String()) } if err = buf.WriteByte(c); err != nil { return nil, err @@ -323,7 +323,7 @@ func extractFrontMatterDelims(r *bufio.Reader, left, right []byte) (fm []byte, e // is expected that the delimiter only contains one character. for { if c, err = r.ReadByte(); err != nil { - return nil, fmt.Errorf("unable to read frontmatter at filepos %d: %s", buf.Len(), err) + return nil, fmt.Errorf("unable to read frontmatter at filepos %d: %s\n%.100s...", buf.Len(), err, buf.String()) } if err = buf.WriteByte(c); err != nil { return nil, err @@ -344,7 +344,7 @@ func extractFrontMatterDelims(r *bufio.Reader, left, right []byte) (fm []byte, e if err != nil { // It is ok that the end delimiter ends with EOF if err != io.EOF || level != 1 { - return nil, fmt.Errorf("unable to read frontmatter at filepos %d: %s", buf.Len(), err) + return nil, fmt.Errorf("unable to read frontmatter at filepos %d: %s\n%.100s...", buf.Len(), err, buf.String()) } } else { switch c { @@ -358,7 +358,7 @@ func extractFrontMatterDelims(r *bufio.Reader, left, right []byte) (fm []byte, e return nil, err } if c, err = r.ReadByte(); err != nil { - return nil, fmt.Errorf("unable to read frontmatter at filepos %d: %s", buf.Len(), err) + return nil, fmt.Errorf("unable to read frontmatter at filepos %d: %s\n%.100s...", buf.Len(), err, buf.String()) } if c != '\n' { return nil, fmt.Errorf("frontmatter delimiter must be followed by CR+LF or LF but those can't be found at filepos %d", buf.Len())