/* MIT License Copyright (c) 2020 Titus Wormer mdast-util-gfm-autolink-literal is from markdown only. mdast-util-gfm-footnote is not included. */ import { gfmAutolinkLiteralFromMarkdown } from 'mdast-util-gfm-autolink-literal'; import { gfmStrikethroughFromMarkdown, gfmStrikethroughToMarkdown, } from 'mdast-util-gfm-strikethrough'; import { gfmTableFromMarkdown, gfmTableToMarkdown } from 'mdast-util-gfm-table'; import { gfmTaskListItemFromMarkdown, gfmTaskListItemToMarkdown, } from 'mdast-util-gfm-task-list-item'; import { gfmAutolinkLiteral } from 'micromark-extension-gfm-autolink-literal'; import { gfmStrikethrough } from 'micromark-extension-gfm-strikethrough'; import { gfmTable } from 'micromark-extension-gfm-table'; import { gfmTaskListItem } from 'micromark-extension-gfm-task-list-item'; import { combineExtensions } from 'micromark-util-combine-extensions'; import type { Processor } from 'unified'; export function gfm() { return combineExtensions([ gfmAutolinkLiteral(), gfmStrikethrough(), gfmTable(), gfmTaskListItem(), ]); } function gfmFromMarkdown() { return [ gfmStrikethroughFromMarkdown(), gfmTableFromMarkdown(), gfmTaskListItemFromMarkdown(), gfmAutolinkLiteralFromMarkdown(), ]; } function gfmToMarkdown() { return { extensions: [ gfmStrikethroughToMarkdown(), gfmTableToMarkdown(), gfmTaskListItemToMarkdown(), ], }; } export function remarkGfm(this: Processor) { // eslint-disable-next-line @typescript-eslint/no-this-alias const self = this; const data = self.data(); const micromarkExtensions = data.micromarkExtensions || (data.micromarkExtensions = []); const fromMarkdownExtensions = data.fromMarkdownExtensions || (data.fromMarkdownExtensions = []); const toMarkdownExtensions = data.toMarkdownExtensions || (data.toMarkdownExtensions = []); micromarkExtensions.push(gfm()); fromMarkdownExtensions.push(gfmFromMarkdown()); toMarkdownExtensions.push(gfmToMarkdown()); }