fix: parse empty markdown front matter

This commit is contained in:
Neil
2026-05-31 02:52:10 -07:00
parent 164139bafc
commit 6d4a01f66f
2 changed files with 21 additions and 1 deletions
@@ -49,6 +49,26 @@ describe('extractFrontMatter', () => {
expect(result!.raw).toBe('---\n\n---\n')
expect(result!.body).toBe('# Body\n')
})
it('handles empty front-matter block without a blank line', () => {
const content = '---\n---\n# Body\n'
const result = extractFrontMatter(content)
expect(result).not.toBeNull()
expect(result!.raw).toBe('---\n---\n')
expect(result!.body).toBe('# Body\n')
})
it('handles empty TOML front-matter block without a blank line', () => {
const content = '+++\n+++\nBody\n'
const result = extractFrontMatter(content)
expect(result).not.toBeNull()
expect(result!.raw).toBe('+++\n+++\n')
expect(result!.body).toBe('Body\n')
})
it('does not treat same-line delimiter text as a closing delimiter', () => {
expect(extractFrontMatter('---\ntitle: Hello---\n# Body\n')).toBeNull()
})
})
describe('prependFrontMatter', () => {
@@ -1,4 +1,4 @@
const FRONTMATTER_RE = /^(---|\+\+\+)\r?\n([\s\S]*?)\r?\n\1(?:\r?\n|$)/
const FRONTMATTER_RE = /^(---|\+\+\+)\r?\n(?:[\s\S]*?\r?\n)?\1(?:\r?\n|$)/
export type FrontMatter = {
/** The full raw front-matter block including delimiters and trailing newline. */