forked from newrelic/docs-website
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tocLinks.js
34 lines (28 loc) · 841 Bytes
/
tocLinks.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const visit = require('unist-util-visit');
const { isMdxElement, hasAttribute, setAttribute } = require('./utils/mdxast');
const is = require('unist-util-is');
const TOC_LINK = /\?toc=true$/;
const tocLinks = () => (tree) => {
visit(
tree,
(node) => is(node, 'link'),
(link) => {
if (TOC_LINK.test(link.url)) {
link.url = replaceToc(link.url);
}
}
);
visit(
tree,
(node) => isMdxElement('ButtonLink', node) && hasAttribute('to', node),
(button) => {
const attr = button.attributes.find((attr) => attr.name === 'to');
if (TOC_LINK.test(attr.value)) {
attr.value = replaceToc(attr.value);
setAttribute('variant', 'primary', button);
}
}
);
};
const replaceToc = (url) => url.replace(TOC_LINK, '/table-of-contents');
module.exports = tocLinks;