|
|
|
|
|
export default function rehypeRestoreAtInCode() { |
|
|
return (tree) => { |
|
|
const restoreInNode = (node) => { |
|
|
if (!node || typeof node !== 'object') return; |
|
|
const isText = node.type === 'text'; |
|
|
if (isText && typeof node.value === 'string' && node.value.includes('__AT_SENTINEL__')) { |
|
|
node.value = node.value.replace(/__AT_SENTINEL__/g, '@'); |
|
|
} |
|
|
const isCodeEl = node.type === 'element' && node.tagName === 'code'; |
|
|
const children = Array.isArray(node.children) ? node.children : []; |
|
|
if (isCodeEl && children.length) { |
|
|
children.forEach(restoreInNode); |
|
|
return; |
|
|
} |
|
|
children.forEach(restoreInNode); |
|
|
}; |
|
|
restoreInNode(tree); |
|
|
}; |
|
|
} |
|
|
|
|
|
|
|
|
|