@astrojs/mdx
Version:
Add support for MDX pages in your Astro site
36 lines (35 loc) • 939 B
JavaScript
const nonAlphaRe = /[^a-zA-Z]/;
function isComponent(tagName) {
return tagName[0] && tagName[0].toLowerCase() !== tagName[0] || tagName.includes(".") || nonAlphaRe.test(tagName[0]);
}
function hasDirective(node, prefix) {
for (const a of node.attributes) {
if (a.type === "mdxJsxAttribute" && a.name.startsWith(prefix)) return true;
}
return false;
}
function findAttrValue(node, name) {
for (const a of node.attributes) {
if (a.type === "mdxJsxAttribute" && a.name === name) {
return typeof a.value === "string" ? a.value : null;
}
}
return null;
}
function makeJsxAttr(name, value) {
return { type: "mdxJsxAttribute", name, value };
}
function makeJsxExprAttr(name, expression) {
return {
type: "mdxJsxAttribute",
name,
value: { type: "mdxJsxAttributeValueExpression", value: expression }
};
}
export {
findAttrValue,
hasDirective,
isComponent,
makeJsxAttr,
makeJsxExprAttr
};