diff --git a/src/buildPost.test.ts b/src/buildPost.test.ts new file mode 100644 index 0000000..562d65e --- /dev/null +++ b/src/buildPost.test.ts @@ -0,0 +1,14 @@ +import { expect, test } from "vitest"; +import { buildPost } from "./buildPost"; + +test("assembles frontmatter + body with single trailing newline", () => { + const out = buildPost({ + frontmatterPairs: [{ key: "layout", value: "post" }], + body: "Hello world", + }); + expect(out).toBe("---\nlayout: post\n---\n\nHello world\n"); +}); + +test("empty frontmatter still emits a delimiter block", () => { + expect(buildPost({ frontmatterPairs: [], body: "x" })).toBe("---\n\n---\n\nx\n"); +}); diff --git a/src/buildPost.ts b/src/buildPost.ts new file mode 100644 index 0000000..dc7dd8b --- /dev/null +++ b/src/buildPost.ts @@ -0,0 +1,7 @@ +import { Pair, serializeFrontmatter } from "./frontmatter"; + +export function buildPost(o: { frontmatterPairs: Pair[]; body: string }): string { + const fm = serializeFrontmatter(o.frontmatterPairs); + const body = o.body.replace(/\s+$/, ""); + return `${fm}\n${body}\n`; +}