use std::collections::HashMap;
use crate::protocol::{DialectMetadata, DialectTags};
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
#[cfg_attr(feature = "specta", derive(specta::Type))]
pub struct MavInspectMetadata {
tags: DialectTags,
dialects: Option<HashMap<String, DialectMetadata>>,
}
impl MavInspectMetadata {
pub fn tags(&self) -> &[String] {
self.tags.tags()
}
pub fn metadata_for_dialect(&self, dialect_name: impl AsRef<str>) -> DialectMetadata {
let dialect_name = dialect_name.as_ref();
let mut metadata = DialectMetadata {
tags: self.tags.clone(),
};
if let Some(dialects_metadata) = &self.dialects {
if let Some(dialect_metadata) = dialects_metadata.get(dialect_name) {
metadata.tags.extend(&dialect_metadata.tags);
}
}
metadata
}
}