deepl-mark/dist/ast/mdast.js
2026-03-02 23:03:52 +01:00

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
};