kjelsrud.dev/node_modules/remark-frontmatter/index.js
2023-07-19 21:31:30 +02:00

37 lines
942 B
JavaScript

/**
* @typedef {import('mdast').Root} Root
* @typedef {import('micromark-extension-frontmatter').Options} Options
*/
import {frontmatter} from 'micromark-extension-frontmatter'
import {
frontmatterFromMarkdown,
frontmatterToMarkdown
} from 'mdast-util-frontmatter'
/**
* Plugin to add support for frontmatter.
*
* @type {import('unified').Plugin<[Options?]|void[], Root>}
*/
export default function remarkFrontmatter(options = 'yaml') {
const data = this.data()
add('micromarkExtensions', frontmatter(options))
add('fromMarkdownExtensions', frontmatterFromMarkdown(options))
add('toMarkdownExtensions', frontmatterToMarkdown(options))
/**
* @param {string} field
* @param {unknown} value
*/
function add(field, value) {
const list = /** @type {unknown[]} */ (
// Other extensions
/* c8 ignore next 2 */
data[field] ? data[field] : (data[field] = [])
)
list.push(value)
}
}