33 lines
		
	
	
		
			882 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			882 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const visit = require('unist-util-visit');
 | |
| const { matches } = require('unist-util-select');
 | |
| const directive = require('mdast-util-directive');
 | |
| var toMarkdown = require('mdast-util-to-markdown');
 | |
| 
 | |
| 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;
 |