mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
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
This commit is contained in:
parent
4bed69629e
commit
98659bf3b8
2 changed files with 2 additions and 1 deletions
|
@ -207,7 +207,7 @@ func extractFrontMatterDelims(r *bufio.Reader, left, right []byte) (fm FrontMatt
|
||||||
switch c {
|
switch c {
|
||||||
case left[len(left)-1]:
|
case left[len(left)-1]:
|
||||||
if sameDelim { // YAML, TOML case
|
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:
|
nextByte:
|
||||||
c, err = r.ReadByte()
|
c, err = r.ReadByte()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -238,6 +238,7 @@ func TestExtractFrontMatter(t *testing.T) {
|
||||||
{"--- \nminc\n--- \ncontent", []byte("---\nminc\n---\n"), true},
|
{"--- \nminc\n--- \ncontent", []byte("---\nminc\n---\n"), true},
|
||||||
{"---\ncnim\n---\ncontent\n", []byte("---\ncnim\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},
|
{"---\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 {
|
for _, test := range tests {
|
||||||
|
|
Loading…
Reference in a new issue