36 lines
		
	
	
		
			951 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			36 lines
		
	
	
		
			951 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | const visitChildren = require('unist-util-visit-children'); | ||
|  | 
 | ||
|  | function hasId(node, index, parent) { | ||
|  |   // image references should always be inside paragraphs.
 | ||
|  |   if (node.type !== 'paragraph') return; | ||
|  |   const idHolder = node.children[0]; | ||
|  |   if (idHolder.type === 'imageReference') { | ||
|  |     if (node.children.length > 1) { | ||
|  |       console.log('oooops, too many links together!'); | ||
|  |       // TODO: optional chaining
 | ||
|  |     } else if ( | ||
|  |       parent.children[index + 1] && | ||
|  |       parent.children[index + 1].type === 'code' | ||
|  |     ) { | ||
|  |       console.log('found adjacent code block for id ' + idHolder.identifier); | ||
|  |     } else { | ||
|  |       console.log( | ||
|  |         'ooops! the id ' + idHolder.identifier + ' is not next to a code block' | ||
|  |       ); | ||
|  |     } | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | function plugin() { | ||
|  |   // we don't want to recurse into the tree, hence visitChildren
 | ||
|  | 
 | ||
|  |   const visit = visitChildren(hasId); | ||
|  |   return transformer; | ||
|  | 
 | ||
|  |   function transformer(tree) { | ||
|  |     visit(tree); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = plugin; |