xcodeproj 0.3.0

xcodeproj reader and parser.
Documentation
macro_rules! gen_hash_map_helpers {
    ($([$key:ident, $output:ident]),*) => {
        paste::paste! {
            impl PBXHashMap {
                $(
                    #[doc = "Get " $key " if value is of type " $output]
                    pub fn [<get_ $key>](&self, key: &str) -> Option<&$output> {
                        self.0.get(key)?.[<as_ $key>]()
                    }

                    #[doc = "Try get " $key " of type " $output]
                    pub fn [<try_get_ $key>](&self, key: &str) -> Result<&$output> {
                        let value = self.try_get_value(key)?;
                        value.[<as_ $key>]().ok_or_else(|| anyhow::anyhow!("expected value to be {}, got {:?}", stringify!($key), value))
                    }

                    #[doc = "remove " $key " of type " $output]
                    pub fn [<remove_ $key>](&mut self, key: &str) -> Option<$output> {
                        self.remove_value(key).map(|v| v.[<try_into_ $key>]().ok()).flatten()
                    }

                    #[doc = "Try remove " $key " of type " $output]
                    pub fn [<try_remove_ $key>](&mut self, key: &str) -> Result<$output> {
                        let value = self.try_remove_value(key)?;
                        value.[<try_into_ $key>]()
                    }

                )*
            }
        }
    };
}
pub(crate) use gen_hash_map_helpers;