ceratophrys 0.0.3

Library to draw pixel art as code
Documentation
use crate::{filters::Filter, Image};

#[derive(Debug, Clone)]
pub struct Scoped<F> {
    target_name: String,
    filter: F,
}

impl<F> Scoped<F> {
    pub fn new(target_name: &str, filter: F) -> Self {
        Self {
            target_name: target_name.to_owned(),
            filter,
        }
    }
}

impl<F: Filter> Filter for Scoped<F> {
    fn filter(&self, image: &mut Image) {
        if image.name.as_ref() == Some(&self.target_name) {
            self.filter.filter(image);
        } else {
            for child in &mut image.children {
                self.filter(child);
            }
        }
    }
}