42 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
const { detachNodeFromParent } = require('../lib/xast.js');
 | 
						|
 | 
						|
exports.name = 'removeDesc';
 | 
						|
exports.type = 'visitor';
 | 
						|
exports.active = true;
 | 
						|
exports.description = 'removes <desc>';
 | 
						|
 | 
						|
const standardDescs = /^(Created with|Created using)/;
 | 
						|
 | 
						|
/**
 | 
						|
 * Removes <desc>.
 | 
						|
 * Removes only standard editors content or empty elements 'cause it can be used for accessibility.
 | 
						|
 * Enable parameter 'removeAny' to remove any description.
 | 
						|
 *
 | 
						|
 * https://developer.mozilla.org/en-US/docs/Web/SVG/Element/desc
 | 
						|
 *
 | 
						|
 * @author Daniel Wabyick
 | 
						|
 *
 | 
						|
 * @type {import('../lib/types').Plugin<{ removeAny?: boolean }>}
 | 
						|
 */
 | 
						|
exports.fn = (root, params) => {
 | 
						|
  const { removeAny = true } = params;
 | 
						|
  return {
 | 
						|
    element: {
 | 
						|
      enter: (node, parentNode) => {
 | 
						|
        if (node.name === 'desc') {
 | 
						|
          if (
 | 
						|
            removeAny ||
 | 
						|
            node.children.length === 0 ||
 | 
						|
            (node.children[0].type === 'text' &&
 | 
						|
              standardDescs.test(node.children[0].value))
 | 
						|
          ) {
 | 
						|
            detachNodeFromParent(node, parentNode);
 | 
						|
          }
 | 
						|
        }
 | 
						|
      },
 | 
						|
    },
 | 
						|
  };
 | 
						|
};
 |