31 lines
942 B
JavaScript
31 lines
942 B
JavaScript
/**
|
|
* @typedef {import('mdast').Root} Root
|
|
* @typedef {import('mdast-util-from-markdown').Options} Options
|
|
*/
|
|
|
|
import {fromMarkdown} from 'mdast-util-from-markdown'
|
|
|
|
/**
|
|
* @this {import('unified').Processor}
|
|
* @type {import('unified').Plugin<[Options?] | void[], string, Root>}
|
|
*/
|
|
export default function remarkParse(options) {
|
|
/** @type {import('unified').ParserFunction<Root>} */
|
|
const parser = (doc) => {
|
|
// Assume options.
|
|
const settings = /** @type {Options} */ (this.data('settings'))
|
|
|
|
return fromMarkdown(
|
|
doc,
|
|
Object.assign({}, settings, options, {
|
|
// Note: these options are not in the readme.
|
|
// The goal is for them to be set by plugins on `data` instead of being
|
|
// passed by users.
|
|
extensions: this.data('micromarkExtensions') || [],
|
|
mdastExtensions: this.data('fromMarkdownExtensions') || []
|
|
})
|
|
)
|
|
}
|
|
|
|
Object.assign(this, {Parser: parser})
|
|
}
|