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;
 |