remark-code-title
Version:
remark plugin to add titles to code blocks
35 lines (34 loc) • 960 B
JavaScript
// src/remarkPlugin.ts
import { visit } from "unist-util-visit";
var remarkCodeTitle = () => {
return (tree, file) => {
visit(tree, "code", (node, index, parent) => {
const metaString = `${node.lang ?? ""} ${node.meta ?? ""}`.trim();
if (!metaString)
return;
const [title] = metaString.match(/(?<=title=("|'))(.*?)(?=("|'))/) ?? [""];
if (!title && metaString.includes("title=")) {
file.message("Invalid title", node, "remark-code-title");
return;
}
if (!title)
return;
const titleNode = {
type: "paragraph",
data: {
hName: "div",
hProperties: {
"data-remark-code-title": true,
"data-language": node.lang
}
},
children: [{ type: "text", value: title }]
};
parent.children.splice(index, 0, titleNode);
return index + 2;
});
};
};
export {
remarkCodeTitle as default
};