svgtidy 0.1.4

High-performance SVG optimizer written in Rust
Documentation
use crate::plugins::Plugin;
use crate::tree::{Document, Node};

pub struct RemoveXMLProcInst;

impl Plugin for RemoveXMLProcInst {
    fn apply(&self, doc: &mut Document) {
        doc.root.retain(
            |node| !matches!(node, Node::ProcessingInstruction(target, _) if target == "xml"),
        );
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use crate::parser;
    use crate::printer;

    #[test]
    fn test_remove_xml_proc_inst() {
        let input = "<?xml version=\"1.0\"?><svg></svg>";
        let expected = "<svg/>";

        let mut doc = parser::parse(input).unwrap();
        RemoveXMLProcInst.apply(&mut doc);
        let output = printer::print(&doc);

        assert_eq!(output, expected);
    }
}