UNPKG

remark-code-title

Version:
35 lines (34 loc) 960 B
// 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 };