astro/examples/with-markdown-plugins/add-classes.mjs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

19 lines
497 B
JavaScript
Raw Permalink Normal View History

import { selectAll } from 'hast-util-select';
2022-01-04 20:10:42 +00:00
export default (additions) => {
const adders = Object.entries(additions).map(adder);
return (node) => adders.forEach((a) => a(node));
};
const adder = ([selector, className]) => {
2022-01-04 20:10:42 +00:00
const writer = write(className);
return (node) => selectAll(selector, node).forEach(writer);
};
2022-01-04 20:10:42 +00:00
const write =
(className) =>
({ properties }) => {
if (!properties.className) properties.className = className;
else properties.className += ` ${className}`;
};