writePageMain.js (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import { readFile } from "fs-extra";
import { unified } from "unified";
import remarkParse from "remark-parse";
import remarkRehype from "remark-rehype";
import rehypeStringify from "rehype-stringify";
import remarkFrontmatter from "remark-frontmatter";
import rehypeFormat from "rehype-format";
import rehypeRaw from "rehype-raw";
import rehypeWrap from "rehype-wrap";
//
//NOTE input: markdown -> MDAST -> HAST -> HTML
//TODO does not yet accept before/after JSX components.
//This is using unified's rehypeDocument to create a boilerplate with a few
//inserts (favicon, css, title)
//
export async function writePageMain(filepath) {
const processor = await unified()
.use(remarkParse)
.use(remarkFrontmatter)
.use(remarkRehype, { allowDangerousHtml: true })
.use(rehypeRaw)
.use(rehypeWrap, { wrapper: "main" })
.use(rehypeFormat)
.use(rehypeStringify)
.process(await readFile(filepath, "utf-8"));
return processor.value;
}
// let input = "./input/content/cookie.md";
// console.log(await writePageMain(input));
|