33 lines
882 B
JavaScript
33 lines
882 B
JavaScript
const directive = require('mdast-util-directive');
|
|
var toMarkdown = require('mdast-util-to-markdown');
|
|
const { matches } = require('unist-util-select');
|
|
const visit = require('unist-util-visit');
|
|
|
|
function plugin() {
|
|
return transformer;
|
|
|
|
function transformer(tree) {
|
|
visit(tree, visitor);
|
|
|
|
function visitor(node, id, parent) {
|
|
// currently `remark-directive` seems to be ignoring containerDirectives
|
|
// but, assuming that will get fixed, we test for it anyway.
|
|
const isDirective =
|
|
matches('leafDirective', node) ||
|
|
matches('textDirective', node) ||
|
|
matches('containerDirective', node);
|
|
|
|
if (isDirective) {
|
|
parent.children[id] = {
|
|
type: 'text',
|
|
value: toMarkdown(node, {
|
|
extensions: [directive.toMarkdown]
|
|
}).trim()
|
|
};
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = plugin;
|