use crate::meta::{ComponentMeta, all_meta};
pub fn component_meta(name: &str) -> Option<&'static ComponentMeta> {
all_meta().into_iter().find(|m| m.name == name).map(|&ref m| m)
}
pub fn component_family(name: &str) -> Option<&'static str> {
component_meta(name).map(|m| m.family.as_str())
}
pub fn component_capabilities(name: &str) -> Option<&'static [crate::meta::Capability]> {
component_meta(name).map(|m| m.capabilities)
}
pub fn component_required_parts(name: &str) -> Option<&'static [&'static str]> {
component_meta(name).map(|m| m.required_parts)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_dialog_meta() {
let meta = component_meta("Dialog").unwrap();
assert_eq!(meta.family.as_str(), "overlay");
assert!(meta.required_parts.contains(&"DialogTitle"));
}
#[test]
fn test_button_meta() {
let meta = component_meta("Button").unwrap();
assert!(!meta.composable);
assert!(!meta.capabilities.is_empty());
}
}