shithub: hugo

Download patch

ref: 159bed34c3a850d58d08a36ddc40372ed96af2db
parent: 5cc944ffd77289ab0b8efd69d628fb11d1280993
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Tue Apr 17 06:20:16 EDT 2018

parser: Add some context to front matter parse error

Fixes #4638

--- a/parser/page.go
+++ b/parser/page.go
@@ -308,7 +308,7 @@
 	// 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 @@
 	// 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 @@
 					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 @@
 								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())
--