UNPKG

svgo

Version:

SVGO is a Node.js library and command-line application for optimizing vector images.

55 lines (46 loc) 1.38 kB
import { detachNodeFromParent } from '../lib/xast.js'; /** * @typedef RemoveCommentsParams * @property {ReadonlyArray<RegExp | string> | false=} preservePatterns */ export const name = 'removeComments'; export const description = 'removes comments'; /** * If a comment matches one of the following patterns, it will be * preserved by default. Particularly for copyright/license information. */ const DEFAULT_PRESERVE_PATTERNS = [/^!/]; /** * Remove comments. * * @example * <!-- Generator: Adobe Illustrator 15.0.0, SVG Export * Plug-In . SVG Version: 6.00 Build 0) --> * * @author Kir Belevich * * @type {import('../lib/types.js').Plugin<RemoveCommentsParams>} */ export const fn = (_root, params) => { const { preservePatterns = DEFAULT_PRESERVE_PATTERNS } = params; return { comment: { enter: (node, parentNode) => { if (preservePatterns) { if (!Array.isArray(preservePatterns)) { throw Error( `Expected array in removeComments preservePatterns parameter but received ${preservePatterns}`, ); } const matches = preservePatterns.some((pattern) => { return new RegExp(pattern).test(node.value); }); if (matches) { return; } } detachNodeFromParent(node, parentNode); }, }, }; };