import remarkGfm from "remark-gfm" import smartypants from "remark-smartypants" import { QuartzTransformerPlugin } from "../types" import rehypeSlug from "rehype-slug" import rehypeAutolinkHeadings from "rehype-autolink-headings" export interface Options { enableSmartyPants: boolean linkHeadings: boolean } const defaultOptions: Options = { enableSmartyPants: true, linkHeadings: true, } export const GitHubFlavoredMarkdown: QuartzTransformerPlugin | undefined> = ( userOpts, ) => { const opts = { ...defaultOptions, ...userOpts } return { name: "GitHubFlavoredMarkdown", markdownPlugins() { return opts.enableSmartyPants ? [remarkGfm, smartypants] : [remarkGfm] }, htmlPlugins() { if (opts.linkHeadings) { return [ rehypeSlug, [ rehypeAutolinkHeadings, { behavior: "append", content: { type: "text", value: " ยง", }, }, ], ] } else { return [] } }, } }