vexy-vsvg-plugin-sdk 2.4.2

Plugin SDK for vexy-vsvg
Documentation
// this_file: crates/vexy-vsvg-plugin-sdk/src/plugins/mod.rs

//! All 52 SVGO-compatible optimization plugins.
//!
//! This module declares and re-exports every plugin implementation. Each plugin lives in
//! its own submodule (e.g., `remove_comments.rs`, `convert_colors.rs`) and implements the
//! `Plugin` trait from `vexy_vsvg`.
//!
//! # Plugin Categories
//!
//! **Removal plugins** (18): Strip unnecessary elements, attributes, or content
//! - Comments, metadata, titles, scripts, empty containers, hidden elements, etc.
//!
//! **Conversion plugins** (10): Transform elements/attributes to more compact forms
//! - Colors (named → hex), shapes (ellipse → circle), paths, transforms, styles
//!
//! **Cleanup plugins** (9): Normalize and simplify existing content
//! - Attribute whitespace, numeric values, IDs, enable-background, unused namespaces
//!
//! **Merging plugins** (4): Combine redundant or related elements
//! - Paths, styles, group attributes
//!
//! **Structural plugins** (4): Reorganize element hierarchy
//! - Collapse groups, move attributes between groups and children
//!
//! **Sorting plugins** (2): Reorder for consistency
//! - Attribute order, `<defs>` children
//!
//! **Addition plugins** (2): Inject new attributes/classes
//! - Add attributes/classes to root `<svg>` element
//!
//! **Special plugins** (3): Advanced transforms or external tools
//! - Apply transforms (matrix → shape changes), prefix IDs, reuse paths, usvg integration
//!
//! # Architecture
//!
//! Each plugin is a struct with a `new()` constructor and an `apply(&mut Document)` method.
//! Most plugins use the visitor pattern to traverse the AST and make targeted modifications.
//!
//! See `registry.rs` for how these plugins are registered and configured.

pub mod add_attributes_to_svg_element;
pub mod add_classes_to_svg_element;
pub mod apply_transforms;
pub mod cleanup_attrs;
pub mod cleanup_enable_background;
pub mod cleanup_ids;
// pub mod cleanup_list_of_values;
pub mod cleanup_numeric_values;
pub mod collapse_groups;
pub mod convert_colors;
pub mod convert_ellipse_to_circle;
pub mod convert_one_stop_gradients;
pub mod convert_path_data;
pub mod convert_shape_to_path;
pub mod convert_style_to_attrs;
pub mod convert_transform;
pub mod inline_styles;
pub mod merge_paths;
pub mod merge_styles;
pub mod minify_styles;
pub mod move_elems_attrs_to_group;
pub mod move_group_attrs_to_elems;
pub mod prefix_ids;
pub mod remove_attributes_by_selector;
pub mod remove_attrs;
pub mod remove_comments;
pub mod remove_deprecated_attrs;
pub mod remove_desc;
pub mod remove_dimensions;
pub mod remove_doctype;
pub mod remove_editors_ns_data;
pub mod remove_elements_by_attr;
pub mod remove_empty_attrs;
pub mod remove_empty_containers;
pub mod remove_empty_text;
pub mod remove_hidden_elems;
pub mod remove_metadata;
pub mod remove_non_inheritable_group_attrs;
pub mod remove_off_canvas_paths;
pub mod remove_raster_images;
pub mod remove_scripts;
pub mod remove_style_element;
pub mod remove_title;
pub mod remove_unknowns_and_defaults;
pub mod remove_unused_ns;
pub mod remove_useless_defs;
pub mod remove_useless_stroke_and_fill;
pub mod remove_useless_transforms;
pub mod remove_view_box;
pub mod remove_xlink;
pub mod remove_xml_proc_inst;
pub mod remove_xmlns;
pub mod reuse_paths;
pub mod sort_attrs;
pub mod sort_defs_children;
pub mod usvg;

// Re-export plugins for easier access
pub use add_attributes_to_svg_element::AddAttributesToSVGElementPlugin;
pub use add_classes_to_svg_element::AddClassesToSVGElementPlugin;
pub use apply_transforms::ApplyTransformsPlugin;
pub use cleanup_attrs::CleanupAttrsPlugin;
pub use cleanup_enable_background::CleanupEnableBackgroundPlugin;
pub use cleanup_ids::CleanupIdsPlugin;
// pub use cleanup_list_of_values::CleanupListOfValuesPlugin;
pub use cleanup_numeric_values::CleanupNumericValuesPlugin;
pub use collapse_groups::CollapseGroupsPlugin;
pub use convert_colors::ConvertColorsPlugin;
pub use convert_ellipse_to_circle::ConvertEllipseToCirclePlugin;
pub use convert_one_stop_gradients::ConvertOneStopGradientsPlugin;
pub use convert_path_data::ConvertPathDataPlugin;
pub use convert_shape_to_path::ConvertShapeToPathPlugin;
pub use convert_style_to_attrs::ConvertStyleToAttrsPlugin;
pub use convert_transform::ConvertTransformPlugin;
pub use inline_styles::InlineStylesPlugin;
pub use merge_paths::MergePathsPlugin;
pub use merge_styles::MergeStylesPlugin;
pub use minify_styles::MinifyStylesPlugin;
pub use move_elems_attrs_to_group::MoveElemsAttrsToGroupPlugin;
pub use move_group_attrs_to_elems::MoveGroupAttrsToElemsPlugin;
pub use prefix_ids::PrefixIdsPlugin;
pub use remove_attributes_by_selector::RemoveAttributesBySelectorPlugin;
pub use remove_attrs::RemoveAttrsPlugin;
pub use remove_comments::RemoveCommentsPlugin;
pub use remove_deprecated_attrs::RemoveDeprecatedAttrsPlugin;
pub use remove_desc::RemoveDescPlugin;
pub use remove_dimensions::RemoveDimensionsPlugin;
pub use remove_doctype::RemoveDoctypePlugin;
pub use remove_editors_ns_data::RemoveEditorsNSDataPlugin;
pub use remove_elements_by_attr::RemoveElementsByAttrPlugin;
pub use remove_empty_attrs::RemoveEmptyAttrsPlugin;
pub use remove_empty_containers::RemoveEmptyContainersPlugin;
pub use remove_empty_text::RemoveEmptyTextPlugin;
pub use remove_hidden_elems::RemoveHiddenElemsPlugin;
pub use remove_metadata::RemoveMetadataPlugin;
pub use remove_non_inheritable_group_attrs::RemoveNonInheritableGroupAttrsPlugin;
pub use remove_off_canvas_paths::RemoveOffCanvasPathsPlugin;
pub use remove_raster_images::RemoveRasterImagesPlugin;
pub use remove_scripts::RemoveScriptsPlugin;
pub use remove_style_element::RemoveStyleElementPlugin;
pub use remove_title::RemoveTitlePlugin;
pub use remove_unknowns_and_defaults::RemoveUnknownsAndDefaultsPlugin;
pub use remove_unused_ns::RemoveUnusedNSPlugin;
pub use remove_useless_defs::RemoveUselessDefsPlugin;
pub use remove_useless_stroke_and_fill::RemoveUselessStrokeAndFillPlugin;
pub use remove_useless_transforms::RemoveUselessTransformsPlugin;
pub use remove_view_box::RemoveViewBoxPlugin;
pub use remove_xlink::RemoveXlinkPlugin;
pub use remove_xml_proc_inst::RemoveXMLProcInstPlugin;
pub use remove_xmlns::RemoveXmlnsPlugin;
pub use reuse_paths::ReusePathsPlugin;
pub use sort_attrs::SortAttrsPlugin;
pub use sort_defs_children::SortDefsChildrenPlugin;
pub use usvg::UsvgPlugin;