Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/parser
diff options
context:
space:
mode:
authorTatsushi Demachi <tdemachi@gmail.com>2015-08-03 17:32:51 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2015-08-03 19:30:55 +0300
commit98659bf3b8d11a6bd57439d70551f5f018b6a404 (patch)
treef392919a34d1e5e9c3f8da764e1f18e0916ae069 /parser
parent4bed69629e55f7292505a74e8437a5a05ddf9a22 (diff)
Fix searching YAML/TOML delimiters in frontmatter
When a YAML/TOML's delimiter character sequence is included in a frontmatter string, parser mistakes it as a delimiter. This fixes it by checking a character right before the delimiter sequence is '\n' or it is the beginning of the frontmatter. Fix #1320
Diffstat (limited to 'parser')
-rw-r--r--parser/page.go2
-rw-r--r--parser/parse_frontmatter_test.go1
2 files changed, 2 insertions, 1 deletions
diff --git a/parser/page.go b/parser/page.go
index 21014888f..8ca784acb 100644
--- a/parser/page.go
+++ b/parser/page.go
@@ -207,7 +207,7 @@ func extractFrontMatterDelims(r *bufio.Reader, left, right []byte) (fm FrontMatt
switch c {
case left[len(left)-1]:
if sameDelim { // YAML, TOML case
- if bytes.HasSuffix(buf.Bytes(), left) {
+ if bytes.HasSuffix(buf.Bytes(), left) && (buf.Len() == len(left) || buf.Bytes()[buf.Len()-len(left)-1] == '\n') {
nextByte:
c, err = r.ReadByte()
if err != nil {
diff --git a/parser/parse_frontmatter_test.go b/parser/parse_frontmatter_test.go
index 9ed2d8e5f..999472c0b 100644
--- a/parser/parse_frontmatter_test.go
+++ b/parser/parse_frontmatter_test.go
@@ -238,6 +238,7 @@ func TestExtractFrontMatter(t *testing.T) {
{"--- \nminc\n--- \ncontent", []byte("---\nminc\n---\n"), true},
{"---\ncnim\n---\ncontent\n", []byte("---\ncnim\n---\n"), true},
{"---\ntitle: slug doc 2\nslug: slug-doc-2\n---\ncontent\n", []byte("---\ntitle: slug doc 2\nslug: slug-doc-2\n---\n"), true},
+ {"---\npermalink: '/blog/title---subtitle.html'\n---\ncontent\n", []byte("---\npermalink: '/blog/title---subtitle.html'\n---\n"), true},
}
for _, test := range tests {