diff --git a/frontmatter.go b/frontmatter.go index 00f3167..175a399 100644 --- a/frontmatter.go +++ b/frontmatter.go @@ -11,13 +11,14 @@ func extractFrontmatter(b []byte) (frontmatter, content []byte) { if !bytes.HasPrefix(b, frontmatterOpen) { return nil, b } - fm := b[len(frontmatterOpen):] - if len(fm) != 0 && fm[0] != '\n' { + if len(b) > len(frontmatterOpen) && b[len(frontmatterOpen)] != '\n' { return nil, b } - i := bytes.Index(fm, frontmatterClose) + b = b[len(frontmatterOpen):] + + i := bytes.Index(b, frontmatterClose) if i == -1 { - i = len(fm) + return b, nil } - return fm[:i], b[len(frontmatterOpen)+len(fm):] + return b[:i], b[i+len(frontmatterClose):] } diff --git a/frontmatter_test.go b/frontmatter_test.go index f01431d..29e25a0 100644 --- a/frontmatter_test.go +++ b/frontmatter_test.go @@ -20,6 +20,11 @@ func TestExtractFrontmatter(t *testing.T) { Frontmatter: "\na: b\nc: d", Content: "", }, + { + Raw: "---\na: b\nc: d\n---\nHello, world!", + Frontmatter: "\na: b\nc: d", + Content: "\nHello, world!", + }, { Raw: "# Hello, world!", Frontmatter: "",