kompendium
Version:
Documentation generator for Stencil components
54 lines (43 loc) • 981 B
text/typescript
import map from 'unist-util-map';
export function kompendiumCode(): (tree) => any {
return transformer;
}
function transformer(tree) {
return map(tree, mapCodeNode);
}
function mapCodeNode(node) {
if (node.type !== 'element') {
return node;
}
if (node.tagName !== 'code') {
return node;
}
const language = getLanguage(node.properties);
if (!language) {
return node;
}
return {
...node,
type: 'element',
tagName: 'kompendium-code',
properties: {
language: language,
},
children: [],
};
}
function getLanguage(props: { className?: string[] }) {
if (!props) {
return;
}
if (!('className' in props)) {
return;
}
const languageClass = props.className.find((name) =>
name.startsWith('language-'),
);
if (!languageClass) {
return;
}
return languageClass.replace('language-', '');
}