mirror of
https://github.com/benjaminion/upgrading-ethereum-book.git
synced 2026-01-07 21:53:53 -05:00
53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
import { visit, CONTINUE, SKIP } from 'unist-util-visit';
|
|
|
|
// Clean up any weird HTML artefacts, especially those that fail validation
|
|
|
|
function cleanupHtml() {
|
|
return function (tree) {
|
|
visit(tree, undefined, (node, index, parent) => {
|
|
// Remove `is:raw=""` that's on `code` elements, probably from Prism
|
|
if (node.type === 'element' && node.tagName === 'code') {
|
|
delete node.properties['is:raw'];
|
|
return CONTINUE;
|
|
}
|
|
|
|
// Remove whitespace at the end of headings. This can be left behind by section markers.
|
|
if (
|
|
node.type === 'text' &&
|
|
parent.type === 'element' &&
|
|
['h1', 'h2', 'h3'].includes(parent.tagName)
|
|
) {
|
|
node.value = node.value.trim();
|
|
return CONTINUE;
|
|
}
|
|
|
|
// Huge numbers of newlines weirdly get inserted before tables - no idea why
|
|
if (node.type === 'text' && node.value.match(/^\n\n+$/) !== null) {
|
|
node.value = '\n';
|
|
return CONTINUE;
|
|
}
|
|
|
|
// Remove all comments
|
|
if (node.type === 'comment') {
|
|
parent.children.splice(index, 1);
|
|
return SKIP;
|
|
}
|
|
});
|
|
};
|
|
}
|
|
|
|
export default function () {
|
|
return {
|
|
name: 'myCleanupHtml',
|
|
hooks: {
|
|
'astro:config:setup': ({ updateConfig }) => {
|
|
updateConfig({
|
|
markdown: {
|
|
rehypePlugins: [cleanupHtml],
|
|
},
|
|
});
|
|
},
|
|
},
|
|
};
|
|
}
|