UNPKG

remark-smart-toc

Version:

Implementing intelligent Markdown directory syntax, better than existing solutions

1 lines 1.67 kB
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { toc } from 'mdast-util-toc'\nimport { List } from 'mdast-util-toc/lib'\n\nexport default (depth: 1 | 2 | 3 | 4 | 5 | 6) => {\n return () => (tree: any, file: any) => {\n\n // 查找 [toc] 或 [TOC] 标记\n const tocNode = tree.children.find(\n (node: any) =>\n node.type === 'paragraph' &&\n node.children.length === 1 &&\n node.children[0].type === 'text' &&\n /^(?:\\[?\\[[Tt][Oo][Cc]\\]\\]?|目录|[Cc]ontents?)$/.test(node.children[0].value)\n )\n\n if (tocNode) {\n\n const hasHeadings = tree.children.some((node: any) => /^heading/.test(node.type))\n\n const generatedToc = toc(tree, { maxDepth: depth }).map as List\n\n const ulNode = {\n type: 'list',\n ordered: false,\n start: null,\n loose: false,\n children: hasHeadings ? generatedToc.children : [],\n }\n\n const index = tree.children.indexOf(tocNode)\n tree.children.splice(index, 1, ulNode)\n }\n }\n}\n\n"],"mappings":";AAAA,SAAS,WAAW;AAGpB,IAAO,cAAQ,CAAC,UAAiC;AAC/C,SAAO,MAAM,CAAC,MAAW,SAAc;AAGrC,UAAM,UAAU,KAAK,SAAS;AAAA,MAC5B,CAAC,SACC,KAAK,SAAS,eACd,KAAK,SAAS,WAAW,KACzB,KAAK,SAAS,CAAC,EAAE,SAAS,UAC1B,+CAA+C,KAAK,KAAK,SAAS,CAAC,EAAE,KAAK;AAAA,IAC9E;AAEA,QAAI,SAAS;AAEX,YAAM,cAAc,KAAK,SAAS,KAAK,CAAC,SAAc,WAAW,KAAK,KAAK,IAAI,CAAC;AAEhF,YAAM,eAAe,IAAI,MAAM,EAAE,UAAU,MAAM,CAAC,EAAE;AAEpD,YAAM,SAAS;AAAA,QACb,MAAM;AAAA,QACN,SAAS;AAAA,QACT,OAAO;AAAA,QACP,OAAO;AAAA,QACP,UAAU,cAAc,aAAa,WAAW,CAAC;AAAA,MACnD;AAEA,YAAM,QAAQ,KAAK,SAAS,QAAQ,OAAO;AAC3C,WAAK,SAAS,OAAO,OAAO,GAAG,MAAM;AAAA,IACvC;AAAA,EACF;AACF;","names":[]}