49 lines
1.7 KiB
JavaScript
49 lines
1.7 KiB
JavaScript
import { fromMarkdown } from "mdast-util-from-markdown";
|
|
import { frontmatterFromMarkdown, frontmatterToMarkdown } from "mdast-util-frontmatter";
|
|
import { gfmTableFromMarkdown, gfmTableToMarkdown } from "mdast-util-gfm-table";
|
|
import { htmlCommentFromMarkdown, htmlCommentToMarkdown } from "../vendor/mdast-util-html-comment.js";
|
|
import { mdxFromMarkdown, mdxToMarkdown } from "mdast-util-mdx";
|
|
import { toMarkdown } from "mdast-util-to-markdown";
|
|
import { frontmatter } from "micromark-extension-frontmatter";
|
|
import { gfmTable } from "micromark-extension-gfm-table";
|
|
import { htmlComment } from "../vendor/micromark-extension-html-comment.js";
|
|
import { mdxjs } from "micromark-extension-mdxjs";
|
|
function mdNodeIs(node, type) {
|
|
return node ? node.type === type : false;
|
|
}
|
|
function mdNodeIsJsxElement(node) {
|
|
return mdNodeIs(node, "mdxJsxFlowElement") || mdNodeIs(node, "mdxJsxTextElement");
|
|
}
|
|
function getMdast(markdown) {
|
|
return fromMarkdown(markdown, {
|
|
extensions: [frontmatter("yaml"), mdxjs(), gfmTable, htmlComment()],
|
|
mdastExtensions: [frontmatterFromMarkdown("yaml"), mdxFromMarkdown(), gfmTableFromMarkdown, htmlCommentFromMarkdown()]
|
|
});
|
|
}
|
|
function getMarkdown(mdast) {
|
|
return toMarkdown(mdast, {
|
|
extensions: [frontmatterToMarkdown("yaml"), mdxToMarkdown(), gfmTableToMarkdown(), htmlCommentToMarkdown()],
|
|
listItemIndent: "one",
|
|
join: [
|
|
(__, _, parent) => {
|
|
if (mdNodeIsJsxElement(parent)) {
|
|
return 0;
|
|
}
|
|
if (mdNodeIs(parent, "list")) {
|
|
return 0;
|
|
}
|
|
if (mdNodeIs(parent, "listItem")) {
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
]
|
|
});
|
|
}
|
|
export {
|
|
getMarkdown,
|
|
getMdast,
|
|
mdNodeIs,
|
|
mdNodeIsJsxElement
|
|
};
|